Q&A

  • DB에서 이미지를 읽어와 웹페이지에 뿌려주고 싶은데요...
try

Query1.Open;

Query1.Locate('EventNo',StrToInt(Request.QueryFields.Values['EventNo']),[]);

Picture := TPicture.Create;

Picture.Assign(Query1.FieldByName('Event_Photo'));

JPG := TJPEGImage.Create;

JPG.Assign(Picture.Graphic);

Stream := TMemoryStream.Create;

JPG.SaveToStream(Stream);

Stream.Position := 0;

Response.ContentLength := Stream.Size;

Response.ContentStream := Stream;

Response.ContentType := 'image/jpeg';

finally

JPG.Free;

Picture.Free;



위와 같이 하여 DB에 있는 event_photo에 든 jpg파일을 불러 오고자 합니다.

근데 컴파일 해보니 에러는 안 뜨는데...

두 변수 Jpg와 Picture가 initializaton되지 않았다는 경고와 함께 이미지가 제대로 불러와 지지 않습니다. 무엇이 잘못된 걸까요...?

DB는 델파이에서 기본으로 제공해주는 DBDEMOS alias에 있는 events 테이블을 이용하였습니다.

행복한 추석 되십시오.

3  COMMENTS
  • Profile
    강인규 2001.09.28 01:20
    var

    JPG : TJpegImage;

    Picture : TPicture;

    begin

    JPG : TJPEGImage.Create;

    Picture := TPicture.Create;

    try

    .....



    uses절에 JPEG를 추가해야 합니다.

    기억이 가물가물한데 WebApp에서는 TPicture가 다른 유닛을 참조했던거같기두 하구...

    그럴때는 Picture := Graphics.TPicture.Create; 이런식으로 하시면 됩니다..



    즐프하세여~~^-^



    남호진 wrote:

    > try

    > Query1.Open;

    > Query1.Locate('EventNo',StrToInt(Request.QueryFields.Values['EventNo']),[]);

    > Picture := TPicture.Create;

    > Picture.Assign(Query1.FieldByName('Event_Photo'));

    > JPG := TJPEGImage.Create;

    > JPG.Assign(Picture.Graphic);

    > Stream := TMemoryStream.Create;

    > JPG.SaveToStream(Stream);

    > Stream.Position := 0;

    > Response.ContentLength := Stream.Size;

    > Response.ContentStream := Stream;

    > Response.ContentType := 'image/jpeg';

    > finally

    > JPG.Free;

    > Picture.Free;

    >

    > 위와 같이 하여 DB에 있는 event_photo에 든 jpg파일을 불러 오고자 합니다.

    > 근데 컴파일 해보니 에러는 안 뜨는데...

    > 두 변수 Jpg와 Picture가 initializaton되지 않았다는 경고와 함께 이미지가 제대로 불러와 지지 않습니다. 무엇이 잘못된 걸까요...?

    > DB는 델파이에서 기본으로 제공해주는 DBDEMOS alias에 있는 events 테이블을 이용하였습니다.

    > 행복한 추석 되십시오.

  • Profile
    남호진 2001.09.28 05:00
    강인규 wrote:

    > var

    > JPG : TJpegImage;

    > Picture : TPicture;

    > begin

    > JPG : TJPEGImage.Create;

    > Picture := TPicture.Create;

    > try

    > .....

    >

    > uses절에 JPEG를 추가해야 합니다.

    > 기억이 가물가물한데 WebApp에서는 TPicture가 다른 유닛을 참조했던거같기두 하구...

    > 그럴때는 Picture := Graphics.TPicture.Create; 이런식으로 하시면 됩니다..

    >

    > 즐프하세여~~^-^

    >

    > 남호진 wrote:

    > > try

    > > Query1.Open;

    > > Query1.Locate('EventNo',StrToInt(Request.QueryFields.Values['EventNo']),[]);

    > > Picture := TPicture.Create;

    > > Picture.Assign(Query1.FieldByName('Event_Photo'));

    > > JPG := TJPEGImage.Create;

    > > JPG.Assign(Picture.Graphic);

    > > Stream := TMemoryStream.Create;

    > > JPG.SaveToStream(Stream);

    > > Stream.Position := 0;

    > > Response.ContentLength := Stream.Size;

    > > Response.ContentStream := Stream;

    > > Response.ContentType := 'image/jpeg';

    > > finally

    > > JPG.Free;

    > > Picture.Free;

    > >

    > > 위와 같이 하여 DB에 있는 event_photo에 든 jpg파일을 불러 오고자 합니다.

    > > 근데 컴파일 해보니 에러는 안 뜨는데...

    > > 두 변수 Jpg와 Picture가 initializaton되지 않았다는 경고와 함께 이미지가 제대로 불러와 지지 않습니다. 무엇이 잘못된 걸까요...?

    > > DB는 델파이에서 기본으로 제공해주는 DBDEMOS alias에 있는 events 테이블을 이용하였습니다.

    > > 행복한 추석 되십시오.

    감사합니다. 님께서 조언해 주신대로 Create문을 예외 처리 블럭 바깥으로 빼니 경고는 없어졌는데 이미지는 여전히 네모 안에 엑스자만 뜨네요... 물론 uses문에 Graphics와 JPEG을 포함시켰습니다.

    var

    JPG : TJpegImage;

    Stream : TMemoryStream;

    Picture : TPicture;

    begin

    Picture := TPicture.Create;

    JPG := TJPEGImage.Create;

    try

    Query1.Open;

    Query1.Locate('EventNo',StrToInt(Request.QueryFields.Values['EventNo']),[]);

    Picture.Assign(Query1.FieldByName('Event_Photo'));

    JPG.Assign(Picture.Graphic);

    Stream := TMemoryStream.Create;

    JPG.SaveToStream(Stream);

    Stream.Position := 0;

    Response.ContentLength := Stream.Size;

    Response.ContentStream := Stream;

    Response.ContentType := 'image/jpeg';

    finally

    JPG.Free;

    Picture.Free;

    어느부분이 문제가 있을지 다시 한번 부탁드리겠습니다.

    즐거운 추석 되십시오.

  • Profile
    강인규 2001.09.28 05:35


    Response.SendResponse;

    가 빠졌네요...



    그 책(?)의 버그입니다...ㅋㄷㅋㄷ





    남호진 wrote:

    > 강인규 wrote:

    > > var

    > > JPG : TJpegImage;

    > > Picture : TPicture;

    > > begin

    > > JPG : TJPEGImage.Create;

    > > Picture := TPicture.Create;

    > > try

    > > .....

    > >

    > > uses절에 JPEG를 추가해야 합니다.

    > > 기억이 가물가물한데 WebApp에서는 TPicture가 다른 유닛을 참조했던거같기두 하구...

    > > 그럴때는 Picture := Graphics.TPicture.Create; 이런식으로 하시면 됩니다..

    > >

    > > 즐프하세여~~^-^

    > >

    > > 남호진 wrote:

    > > > try

    > > > Query1.Open;

    > > > Query1.Locate('EventNo',StrToInt(Request.QueryFields.Values['EventNo']),[]);

    > > > Picture := TPicture.Create;

    > > > Picture.Assign(Query1.FieldByName('Event_Photo'));

    > > > JPG := TJPEGImage.Create;

    > > > JPG.Assign(Picture.Graphic);

    > > > Stream := TMemoryStream.Create;

    > > > JPG.SaveToStream(Stream);

    > > > Stream.Position := 0;

    > > > Response.ContentLength := Stream.Size;

    > > > Response.ContentStream := Stream;

    > > > Response.ContentType := 'image/jpeg';

    > > > finally

    > > > JPG.Free;

    > > > Picture.Free;

    > > >

    > > > 위와 같이 하여 DB에 있는 event_photo에 든 jpg파일을 불러 오고자 합니다.

    > > > 근데 컴파일 해보니 에러는 안 뜨는데...

    > > > 두 변수 Jpg와 Picture가 initializaton되지 않았다는 경고와 함께 이미지가 제대로 불러와 지지 않습니다. 무엇이 잘못된 걸까요...?

    > > > DB는 델파이에서 기본으로 제공해주는 DBDEMOS alias에 있는 events 테이블을 이용하였습니다.

    > > > 행복한 추석 되십시오.

    > 감사합니다. 님께서 조언해 주신대로 Create문을 예외 처리 블럭 바깥으로 빼니 경고는 없어졌는데 이미지는 여전히 네모 안에 엑스자만 뜨네요... 물론 uses문에 Graphics와 JPEG을 포함시켰습니다.

    > var

    > JPG : TJpegImage;

    > Stream : TMemoryStream;

    > Picture : TPicture;

    > begin

    > Picture := TPicture.Create;

    > JPG := TJPEGImage.Create;

    > try

    > Query1.Open;

    > Query1.Locate('EventNo',StrToInt(Request.QueryFields.Values['EventNo']),[]);

    > Picture.Assign(Query1.FieldByName('Event_Photo'));

    > JPG.Assign(Picture.Graphic);

    > Stream := TMemoryStream.Create;

    > JPG.SaveToStream(Stream);

    > Stream.Position := 0;

    > Response.ContentLength := Stream.Size;

    > Response.ContentStream := Stream;

    > Response.ContentType := 'image/jpeg';

    > finally

    > JPG.Free;

    > Picture.Free;

    > 어느부분이 문제가 있을지 다시 한번 부탁드리겠습니다.

    > 즐거운 추석 되십시오.