자유롭게 질의 및 응답을 할 수 있는 게시판입니다. 개발자 여러분의 답변이 큰 도움이 됩니다.
- 제품설치/등록 오류 문의: 설치/등록 Q&A 이용 (제품 구매 고객 한정)
Firemonkey Android에서 TImage 의 크기가 왜 변하나요?
2017.07.05 20:45
썸네일을 테스트 하려고 만든 데모입니다.
이미지의 WrapMode를 Original로 선택하여 실제 크기를 보여주도록 하였고
크기비교를 위해 사각형을 100 x 100으로 각각 놓았습니다.
소스는
Image2->Bitmap->Assign(Image1->Bitmap->CreateThumbnail(100, 100));
한줄이고 32비트 프로그램에서는 원하는대로 잘 나옵니다.
그런데 Android 로 올리면 이미지가 작아집니다.
원본 이미지도 같이 작아지는 것으로 보아 뭔가 원인이 있을듯 한데
설명을 잘 못찾겠더군요.
실제 크기에 비슷하게 만들어야 덜 깨질 것 같은데 원인을 모르니 어느 정도
크기로 만들어야 될지 감이 안잡힙니다.
댓글 2
-
험프리
2017.07.06 11:43
-
쿠리
2017.07.06 14:49
화면 밀도 문제가 맞습니다.
아래 코드로 테스트 결과 정상크기로 보입니다.
Image2->MultiResBitmap->Width = 100;
Image2->MultiResBitmap->Height = 100;
TFixedBitmapItem *item = Image2->MultiResBitmap->Items[0];
item->Scale = 1.0;
item->Bitmap->Assign(Image1->Bitmap->CreateThumbnail(100, 100));
for(int i = 2, size; i < 6; ++i) {
size = i * 100;
item = Image2->MultiResBitmap->Add();
item->Scale = i;
item->Bitmap->Assign(Image1->Bitmap->CreateThumbnail(size, size));
}
감사합니다.
Firemonkey Android에서 TImage 의 크기가 왜 변하나요?
2017.07.05 20:45
썸네일을 테스트 하려고 만든 데모입니다.
이미지의 WrapMode를 Original로 선택하여 실제 크기를 보여주도록 하였고
크기비교를 위해 사각형을 100 x 100으로 각각 놓았습니다.
소스는
Image2->Bitmap->Assign(Image1->Bitmap->CreateThumbnail(100, 100));
한줄이고 32비트 프로그램에서는 원하는대로 잘 나옵니다.
그런데 Android 로 올리면 이미지가 작아집니다.
원본 이미지도 같이 작아지는 것으로 보아 뭔가 원인이 있을듯 한데
설명을 잘 못찾겠더군요.
실제 크기에 비슷하게 만들어야 덜 깨질 것 같은데 원인을 모르니 어느 정도
크기로 만들어야 될지 감이 안잡힙니다.
댓글 2
-
험프리
2017.07.06 11:43
-
쿠리
2017.07.06 14:49
화면 밀도 문제가 맞습니다.
아래 코드로 테스트 결과 정상크기로 보입니다.
Image2->MultiResBitmap->Width = 100;
Image2->MultiResBitmap->Height = 100;
TFixedBitmapItem *item = Image2->MultiResBitmap->Items[0];
item->Scale = 1.0;
item->Bitmap->Assign(Image1->Bitmap->CreateThumbnail(100, 100));
for(int i = 2, size; i < 6; ++i) {
size = i * 100;
item = Image2->MultiResBitmap->Add();
item->Scale = i;
item->Bitmap->Assign(Image1->Bitmap->CreateThumbnail(size, size));
}감사합니다.
안드로이드 환경에서 화면밀도가 달라 작아지는 것으로 예상됩니다.
파이어몽키에서는 MultiResBitmap을 지원합니다.(여러 해상도에 맞는 이미지 제공)
아마 테스트하신 안드로이드 환경이 2배의 밀도를 갖는 것으로 보입니다.
MultiResBitmap에 대한 자세한 내용은 기술문서를 참고하세요.
http://docwiki.embarcadero.com/RADStudio/Tokyo/en/Using_Multi-Resolution_Bitmaps
원할하게 화면에 표시하기 위한 방법은 2가지입니다.
1, 100x100 이미지를 WrapMode = Stretch로 늘려서 표현하시기 바랍니다.
목록의 이미지 영역에 100x100을 늘려서 보여줘도 메모리 사용에는 큰 영향을 주지 않습니다.
2, MultiResBitmap 속성창에서 2배(Scale = 2.000)에 이미지를 등록하시기 바랍니다.
(동적으로 구현 시 Image1.MultiResBitmap.Add 등의 코드로 작성해야합니다.)
위 2가지 테스트해보셔서 해결되면 좋겠네요.
결과도 댓글로 남겨주시면 감사하겠습니다.