아래 두개의 함수(SetStretchBltMode, StretchBlt)를 활용하니 화질이 깨끗하게 나옵니다. 참고하세요.
혹 델파이2005 이상 VCL에 있는 ScaleImage 함수를 델파이7로 활용하시는 분이 계시면 공유 좀 부탁드립니다.
tmpBmp := TBitmap.Create;
BMP:=TBitmap.Create;
BMP.Assign(image1.Picture.Graphic);
iHeight := Ceil((BMP.Height*600)/BMP.Width);
tmpBmp.Width:=600;
tmpBmp.Height:=iHeight;
SetStretchBltMode(tmpBmp.Canvas.Handle, HALFTONE);
StretchBlt(tmpBmp.Canvas.Handle, 0, 0, tmpBmp.Width, tmpBmp.Height, BMP.Canvas.Handle, 0, 0, BMP.Width, BMP.Height, SRCCOPY );
my_jpeg.Assign(tmpBmp);
[참고링크]
http://www.borlandforum.com/impboard/impboard.dll?action=read&db=bcb_tip&no=1132
엘레코스 님이 쓰신 글 :
: 안녕하세요?
: 팁란에 '고품질 썸네일 이미지를 쉽게 만들기' 를 임프님이 올려주셨는데요,
:
http://cbuilder.borlandforum.com/impboard/impboard.dll?action=read&db=bcb_tip&no=1128
:
: 위에서 사용한 ScaleImage 프로시져가 델파이 2005 이상에만 있는 거네요.
: 혹 델파이7에서 사용하도록 할 수 없을까요?
: 이미지 관련 CopyRect, StretchDraw, SetStretchBltMode 함수 등을 사용해 보았는데
: 원본이미지(1627*2312)를 너비600, 높이800픽셀(600*800) 정도 축소시에도 부분적으로 왜곡되는 현상이 있어서요.
: 구글검색으로 SmoothResize 함수를 두어개 사용해 보았는데 아주 약간 개선될뿐
: 몇 글자들이 흐릿하게 보이는 현상은 여전했습니다.
: