this question에서 나는 CopyRect 메서드의 올바른 사용에 대해 물었습니다. 내 문제가 해결 된 대답을 가지고 있지만 지금은 복사 된 사각형의 색이 잘못되었습니다 (256 값으로 제한?). 거짓 색상델파이에서 올바른 색상으로 CopyRect (스케일링)
var
Bmp: TBitmap;
begin
Image1.Picture.LoadFromFile(SomeJPGimage);
Bmp := TBitmap.Create;
try
Bmp.Assign(Image1.Picture.Graphic);
with Bmp do
Image2.Canvas.CopyRect(Image2.Canvas.ClipRect, Canvas, Canvas.ClipRect);
finally
Bmp.Free;
end;
end;
삽입 된이 이미지 2입니다 : 이 코드입니다. 크기를 조정하지 않으면 색상이 맞습니다.
크기를 조정할 때 원본 이미지 (JPG)의 24 비트 색상을 얻으려면 어떻게해야합니까?
편집
그리기가 아닙니다. 원본 이미지의 일부분의 크기가 조정 된 버전을 복사하고 싶습니다.
문제점을 중복 적용 할 수 없습니다. 당신이보고있는 것은 크기 조정의 결과라고 생각합니다. 아마도 이미지가 축소되었을 것입니다. 이 테스트를 수행하십시오 : http://www.spronkey.com/sdc-gradients.png을 잡고 jpg로 변환하십시오. 이 이미지를로드하지만 ** 이미지의 크기를 조정하지 않고 ** 코드를 실행하십시오. Image2.Canvas.CopyRect (Rect (0,0,300,74), Canvas, Rect (46010767601150));'이 부분은 jpg로 변환하기 전에 고유 색상이 599 개 있습니다. 변환 후 약 8000 개의 고유 한 색상이 있습니다. 원하는 경우 이미지의 다른 부분으로 테스트를 복제하십시오. 색상 감소가 발생하지 않을 것입니다. –
RGB 큐브 부분은 Image2.Canvas를 변환하기 전에 테스트 용으로 16384 색이 더 좋습니다.CopyRect (Rect (0,0,128,128), Canvas, Rect (1118,683,1246,811)); –
@Sertac - 잘못된 색상은 크기 변경의 결과 인 것처럼 보이며 CopyRect 자체의 결과는 아닙니다. 내 질문을 조정합니다 : 크기 조정 및 진정한 색상을 유지하는 방법이 있습니까? – stevenvh