안녕하세요.
TBitmap을 이용하여 이미지를 자르는 작업을 하던 중 의문이 있어 질문을
드립니다.
MyBMP : TBitmap;
MyRect := Rect(ii*cWid, jj*cHgt, (ii+1)*cWid, (jj+1)*cHgt);
MyOther := Rect(0,0,cWid, cHgt);
MyBMP.Canvas.CopyRect(MyOther, Image1.Canvas, MyRect);
MyBMP.SaveToFile ('d:jpgwimagedivide' + IntToStr(ii) + IntToStr(jj) + '.bmp');
이렇게 하면 CopyRect할 때 이미지가 복사가 안되는 것 같습니다.
SaveToFile 하면 바트맵파일은 만들어지는데 0 KB 입니다.
그런데 똑같은 코드로 아래와 같이 하면
image2.Canvas.CopyRect(MyOther, Image1.Canvas, MyRect);
image2.Picture.SaveToFile('d:jpgwimagedivide' + IntToStr(ii) + IntToStr(jj) + '.bmp');
하면 파일이 정상적으로 만들어 집니다.
그런데 저는 JPG 파일로 말들어야 하기 때문에 처음 방법으로 코딩을 하여
MyJPEG.Assign(MyBMp);
이런 식으로 작업을 하려고 합니다.
왜 TBitmap 에서 CopyRect를 하면 이미지가 복사가 안되는지 모르겠습니다.
여려분의 조언을 부탁합니다.
> 안녕하세요.
>
> TBitmap을 이용하여 이미지를 자르는 작업을 하던 중 의문이 있어 질문을
> 드립니다.
>
> MyBMP : TBitmap;
>
> MyRect := Rect(ii*cWid, jj*cHgt, (ii+1)*cWid, (jj+1)*cHgt);
> MyOther := Rect(0,0,cWid, cHgt);
>
> MyBMP.Canvas.CopyRect(MyOther, Image1.Canvas, MyRect);
> MyBMP.SaveToFile ('d:jpgwimagedivide' + IntToStr(ii) + IntToStr(jj) + '.bmp');
>
> 이렇게 하면 CopyRect할 때 이미지가 복사가 안되는 것 같습니다.
> SaveToFile 하면 바트맵파일은 만들어지는데 0 KB 입니다.
>
> 그런데 똑같은 코드로 아래와 같이 하면
>
> image2.Canvas.CopyRect(MyOther, Image1.Canvas, MyRect);
> image2.Picture.SaveToFile('d:jpgwimagedivide' + IntToStr(ii) + IntToStr(jj) + '.bmp');
>
> 하면 파일이 정상적으로 만들어 집니다.
> 그런데 저는 JPG 파일로 말들어야 하기 때문에 처음 방법으로 코딩을 하여
>
> MyJPEG.Assign(MyBMp);
>
> 이런 식으로 작업을 하려고 합니다.
>
> 왜 TBitmap 에서 CopyRect를 하면 이미지가 복사가 안되는지 모르겠습니다.
> 여려분의 조언을 부탁합니다.
>
대상 비트맵의 크기설정을 하지 않아서 그런게 아닐까요?
height 나 width 가 0 이라면 CopyRect으로 복사해도 아무것도 복사되지 않습니다.