【发布时间】:2019-09-26 07:40:41
【问题描述】:
如何在不丢失透明度的情况下调整TWICImage 的大小?我使用JclGraphics.Resize() 方法,其参数是TBitmap。在TBitmap.Assign() 方法中失去了透明度。
在这种情况下,图像是图标类型。但在另一种情况下,它可能是不同类型的图像。
uses
jclGraphics, ShellApi, UrlMon;
procedure ResizeImageStream(AStream: TMemoryStream; AWidth, AHeight: Integer);
var
WicImage: TWicImage;
Bitmap1: TBitmap;
begin
WicImage := TWicImage.Create;
try
WicImage.LoadFromStream(AStream);
if ((WicImage.Width > 32) or (WicImage.Height > 32)) then begin
Bitmap1 := TBitmap.Create;
try
Bitmap1.Assign(WicImage);
Bitmap1.Transparent := True;
Bitmap1.TransparentColor := clBlack;
Stretch(AWidth, AHeight, rfMitchell, 0, Bitmap1);
WicImage.Assign(Bitmap1);
AStream.Clear;
WicImage.SaveToStream(AStream);
finally
FreeAndNil(Bitmap1);
end;
end;
finally
WicImage.Free;
end;
end;
procedure ResizeImageFile(AFileNameSrc, AFileNameDsc: String; AWidth, AHeight: Integer);
var
Stream: TMemoryStream;
begin
Stream := TMemoryStream.Create;
try
Stream.LoadFromFile(AFileNameSrc);
ResizeImageStream(stream, AWidth, AHeight);
if FileExists(AFileNameDsc) then
DeleteFile(AFileNameDsc);
Stream.SaveToFile(AFileNameDsc);
finally
Stream.Free;
end;
end;
procedure TForm4.FormCreate(Sender: TObject);
begin
URLDownloadToFile(nil, PChar('https://www.shell.cz/apps/settings/wcm/designs/shell-rio/clientlibs/themes/theme-shell/resources/favicon/favicon.ico'),
PChar('C:\p\favicon.ico'), 0, nil);
ResizeImageFile('C:\p\favicon.ico', 'C:\p\favicon_32.ico', 32, 32);
end;
【问题讨论】:
标签: image delphi resize stretch