자유롭게 질의 및 응답을 할 수 있는 게시판입니다. 개발자 여러분의 답변이 큰 도움이 됩니다.
- 제품설치/등록 오류 문의: 설치/등록 Q&A 이용 (제품 구매 고객 한정)
Delphi 모바일 이미지사이즈 속도 문의
2014.03.19 02:00
델파이 xe5를 이용해서 앱을 작성하고 있는데, DB에 Bytea타입으로 저장된 이미지를, 데이터스냅방식을 이용해서 통신하고, (스타일북 이용)리스트에 데이터를 보여주는 방식을 이용하는데,이미지의 사이즈가 커지면 DB에서 자료읽는데 시간이 오래걸리고, 이미지 보여지는 부분의 화면이 시커멓게 보이는 현상이 있습니다.이걸 해결할수 있는 방법이나 다른방법으로 구현하면 괜찮은 방법이 있는지 알고싶습니다.
imgInfo : 1080.1920png imgInfo : 4128.2322jpeg imgInfo : 500.500jpeg
var memStream: TMemoryStream; imageTemp : Timage; begin imageTemp := Timage.Create(nil); memStream := TMemoryStream.Create; try TBlobField(ClientDataSet.FieldByName('Image')).SaveToStream(memStream) ; except memStream.Free; exit; end; try memStream.Position := 0; imageTemp.Bitmap.LoadFromStream(memStream); Item.StylesData[asStyle] := imageTemp.Bitmap; finally memStream.Free; imageTemp.Free; end;
Delphi 모바일 이미지사이즈 속도 문의
2014.03.19 02:00
델파이 xe5를 이용해서 앱을 작성하고 있는데, DB에 Bytea타입으로 저장된 이미지를, 데이터스냅방식을 이용해서 통신하고, (스타일북 이용)리스트에 데이터를 보여주는 방식을 이용하는데,
이미지의 사이즈가 커지면 DB에서 자료읽는데 시간이 오래걸리고, 이미지 보여지는 부분의 화면이 시커멓게 보이는 현상이 있습니다.
이걸 해결할수 있는 방법이나 다른방법으로 구현하면 괜찮은 방법이 있는지 알고싶습니다.
imgInfo : 1080.1920png
imgInfo : 4128.2322jpeg
imgInfo : 500.500jpeg
var
memStream: TMemoryStream;
imageTemp : Timage;
begin
imageTemp := Timage.Create(nil);
memStream := TMemoryStream.Create;
try
TBlobField(ClientDataSet.FieldByName('Image')).SaveToStream(memStream) ;
except
memStream.Free;
exit;
end;
try
memStream.Position := 0;
imageTemp.Bitmap.LoadFromStream(memStream);
Item.StylesData[asStyle] := imageTemp.Bitmap;
finally
memStream.Free;
imageTemp.Free;
end;
이미지등의 용량이 큰 데이터를 목록과 함께 읽어 표시하게 되면 전체적으로 조회 시간이 오래 걸릴 것 같습니다.
제가 개인적인 의견을 드리자면, 목록 조회시에는 정보만 받아 오시고 별도의 메소드를 쓰레드를 통해 이미지를 가져오는 방식이라면 더 자연스러운 구성이 되지 않을까 싶네요.
(초기 비어있는 이미지를 표시하고 다운로드 완료하면 교체하는 방식)
그리고 화면에 표시할 경우 이미지 크기가 크면 스크롤하는 등의 화면이동 시 무거움(버벅거림) 현상이 있을 수 있으니
CrateThumbnail 함수(함수명은 정확하지 않습니다.)를 이용하셔서 목록의 이미지는 썸네일로 표현하면 더 부드러운 화면을 만드실 수있습니다.