如何从 JPG 或 PNG 制作缩略图并将其加载到 Timage 控件中?
How to make a thumbnail from a JPG or PNG and load it into a Timage control?
如何从 JPG 或 PNG 制作缩略图并将该缩略图加载到 TImage
控件中?
我试过这样的东西,但是 TImage
看起来不像是在加载东西。
Image2
是一个 TImage
控件。
function resize2(source: string): TBitmap;
var
BMPFile, ScreenBMP: TBitmap;
begin
BMPFile := TBitmap.Create;
try
BMPFile.LoadFromFile(source);
ScreenBMP := TBitmap.Create;
ScreenBMP.PixelFormat := BMPFile.PixelFormat;
ScreenBMP.Width := 10;
ScreenBMP.Height := 10;
ScreenBMP.Canvas.StretchDraw(Rect(0,0, ScreenBMP.Width, ScreenBMP.Height), BMPFile);
Result := ScreenBMP;
finally
BMPFile.Free;
end;
end;
procedure TAlpha.dbeditTextBoxChange(Sender: TObject);
var
pic1: string;
mimapa: TBitmap;
begin
try
pic1 := dm.TableNotes.FieldByName('PathPic').AsVariant;
mimapa := resize2(pic1);
//all of these are not working
Image2.Assign(mimapa);
image2.Picture.Bitmap := mimapa;
VCL 的TBitmap
仅支持 BMP 图像。如果您尝试将任何其他类型的图像加载到其中,则会引发异常。
要加载 JPG,您需要改用 TJPEGImage
instead. To load a PNG, use TPNGImage
。
您可以使用 TPicture
来帮助您完成该任务,例如:
uses
..., Vcl.Graphics, Vcl.Imaging.jpeg, Vcl.Imaging.pngimage;
function resize2(source: string): TBitmap;
var
Pic: TPicture;
begin
Pic := TPicture.Create;
try
Pic.LoadFromFile(source);
Result := TBitmap.Create;
try
if Pic.Graphic is TBitmap then
Result.PixelFormat := TBitmap(Pic.Graphic).PixelFormat
else
Result.PixelFormat := pf32bit;
Result.Width := 10;
Result.Height := 10;
Result.Canvas.StretchDraw(Rect(0, 0, Result.Width, Result.Height), Pic.Graphic);
except
Result.Free;
raise;
end;
finally
Pic.Free;
end;
end;
procedure TAlpha.dbeditTextBoxChange(Sender: TObject);
var
pic1: string;
mimapa: TBitmap;
begin
try
pic1 := dm.TableNotes.FieldByName('PathPic').AsString;
mimapa := resize2(pic1);
try
image2.Picture.Assign(mimapa);
finally
mimapa.Free;
end;
...
except
...
end;
end;
如何从 JPG 或 PNG 制作缩略图并将该缩略图加载到 TImage
控件中?
我试过这样的东西,但是 TImage
看起来不像是在加载东西。
Image2
是一个 TImage
控件。
function resize2(source: string): TBitmap;
var
BMPFile, ScreenBMP: TBitmap;
begin
BMPFile := TBitmap.Create;
try
BMPFile.LoadFromFile(source);
ScreenBMP := TBitmap.Create;
ScreenBMP.PixelFormat := BMPFile.PixelFormat;
ScreenBMP.Width := 10;
ScreenBMP.Height := 10;
ScreenBMP.Canvas.StretchDraw(Rect(0,0, ScreenBMP.Width, ScreenBMP.Height), BMPFile);
Result := ScreenBMP;
finally
BMPFile.Free;
end;
end;
procedure TAlpha.dbeditTextBoxChange(Sender: TObject);
var
pic1: string;
mimapa: TBitmap;
begin
try
pic1 := dm.TableNotes.FieldByName('PathPic').AsVariant;
mimapa := resize2(pic1);
//all of these are not working
Image2.Assign(mimapa);
image2.Picture.Bitmap := mimapa;
VCL 的TBitmap
仅支持 BMP 图像。如果您尝试将任何其他类型的图像加载到其中,则会引发异常。
要加载 JPG,您需要改用 TJPEGImage
instead. To load a PNG, use TPNGImage
。
您可以使用 TPicture
来帮助您完成该任务,例如:
uses
..., Vcl.Graphics, Vcl.Imaging.jpeg, Vcl.Imaging.pngimage;
function resize2(source: string): TBitmap;
var
Pic: TPicture;
begin
Pic := TPicture.Create;
try
Pic.LoadFromFile(source);
Result := TBitmap.Create;
try
if Pic.Graphic is TBitmap then
Result.PixelFormat := TBitmap(Pic.Graphic).PixelFormat
else
Result.PixelFormat := pf32bit;
Result.Width := 10;
Result.Height := 10;
Result.Canvas.StretchDraw(Rect(0, 0, Result.Width, Result.Height), Pic.Graphic);
except
Result.Free;
raise;
end;
finally
Pic.Free;
end;
end;
procedure TAlpha.dbeditTextBoxChange(Sender: TObject);
var
pic1: string;
mimapa: TBitmap;
begin
try
pic1 := dm.TableNotes.FieldByName('PathPic').AsString;
mimapa := resize2(pic1);
try
image2.Picture.Assign(mimapa);
finally
mimapa.Free;
end;
...
except
...
end;
end;