이미지 iam로드는 약간 다른 크기입니다. 가장 작은 크기를 얻고 크기에 맞게 다시 크기를 조정하려면 어떻게해야합니까?다른 크기의 이미지로드 TImageList
아래 코드 이미지의로드 ->이 에러 무효 이미지 크기를 제공 약 3 잔상
를 이미지리스트에 추가 -> BMP로 변환. 처음에는 imagelist에게 준 크기만큼 이미지 크기가 너무 크기 때문입니다. 당신이TImageList
에 이미지를 넣어 시작하면
procedure TForm1.LoadImages(const Dir: string);
var
z,i: Integer;
CurFileName: string;
JpgIn: TJPEGImage;
BmpOut: TBitmap;
begin
i := 0;
z := 1;
while True do
begin
CurFileName := Format('%s%d.jpg',
[IncludeTrailingPathDelimiter(Dir), i]);
if not FileExists(CurFileName) then
Break;
JpgIn := TJPEGImage.Create;
try
JpgIn.LoadFromFile(CurFileName);
if z = 1 then
begin
ImageList1.SetSize(jpgin.width, jpgin.Height);
z := 0;
end;
BmpOut := TBitmap.Create;
try
BmpOut.Assign(JpgIn);
ImageList1.Add(BmpOut, nil);
finally
BmpOut.Free;
end;
finally
JpgIn.Free;
end;
Inc(i);
end;
if ImageList1.Count > 0 then
begin
BmpOut := TBitmap.Create;
try
ImageList1.GetBitmap(1, BmpOut);
zimage1.Bitmap.Assign(bmpout);
zimage1.Repaint;
finally
BmpOut.Free;
end;
end;
end;
내가 본 것 TImageList를 발생한 최대 크기로 설정 한 다음 개별 이미지의 종횡비를 벗어나는 픽셀을 투명 배경색으로 설정할 수 있습니다. 그러나 이것을 위해 나는 아직도 최대 크기 encounterd를 알 필요가있을 것이다. 어느 때마다 달라질 수 –
나중에 참조 할 수 있도록 사용중인 코드에 대한 이전 질문에 방금 연결했을 수 있으며 여기에서 후속 질문을 요청할 수 있습니다. 레미는 해결책을 제시했습니다. 나는 그 문제를 설명 할 것이다. 이미지 추가를 시작한 후에도 이미지 목록 크기를 변경하면 이미지 목록이 지워 지므로 크기를 변경할 수 없습니다. 따라서 이미지 목록이 내부적으로 단일 와이드 이미지 (첫 번째 이미지의 너비에 이미지 수를 곱한 값)로 구현되므로 다른 크기의 이미지를 추가하면 예외가 발생합니다. Obviouly, 그러면, 이것은 크기가 작은 이미지로 실패합니다. –