DelphiでWebP画像変換|delphi-webpライブラリの使い方とサンプルコード
Delphiで画像をWebP形式に変換したい方へ。
この記事では、GitHubで公開されている「delphi-webp」ライブラリを使って、jpgやpng画像をWebPに変換する方法を詳しく解説します。
DLLの配置方法、必要なPascalファイル、そして実際に動作するサンプルコードまで、Delphi開発者向けに丁寧に紹介しています。
WebP形式は高圧縮・高品質な画像フォーマットとして注目されており、アプリの軽量化にも効果的です。
Delphi-webpライブラリは以下からダウンロードすることが出来ます。
https://github.com/Wykerd/delphi-webp
Code ⇒ Download ZIP からダウンロードします。
解凍したZIPファイルにある以下DLLを配置する必要があります。
bin\x64\libwebp.dll ・・・64bit用DLL(プロジェクト フォルダの Win64\Debug、Win64\Release に入れる)
bin\x86\libwebp.dll ・・・32bit用DLL(プロジェクト フォルダの Win32\Debug、Win32\Release に入れる)
また、解凍したZIPファイルにある以下3つのファイルをプロジェクト フォルダにコピーして使用する必要があります。
bin\libwebp.pas、bin\Vcl.WebpImage.pas、bin\WebpHelpers.pas
jpgファイルをwebpに画像変換する
jpgファイルをwebpに画像変換するには以下ソースコードです。
libwebp.dll ファイルを実行ファイルと同じ位置にコピーして実行する必要があります。
また、libwebp.pas、Vcl.WebpImage.pas、WebpHelpers.pas ファイルをプロジェクトフォルダにコピーする必要があります。
uses Winapi.GDIPAPI, winapi.GDIPOBJ, libwebp, WebpHelpers;
procedure TForm1.Button1Click(Sender: TObject);
var bmp:TGPBitmap;
strm:TMemoryStream;
quality:Single;
begin
strm:=TMemoryStream.Create;
bmp:=TGPBitmap.Create('..\..\01.jpg');
try
quality:=80.0; //品質(0~100)
WebpEncode(strm, bmp, quality);
strm.SaveToFile('..\..\01.webp');
finally
strm.Free;
bmp.Free;
end;
end;
pngファイルをwebp画像変換する
pngファイルをwebpに画像変換するには以下ソースコードです。
libwebp.dll ファイルを実行ファイルと同じ位置にコピーして実行する必要があります。
また、libwebp.pas、Vcl.WebpImage.pas、WebpHelpers.pas ファイルをプロジェクトフォルダにコピーする必要があります。
uses Winapi.GDIPAPI, winapi.GDIPOBJ, libwebp, WebpHelpers;
procedure TForm1.Button2Click(Sender: TObject);
var bmp:TGPBitmap;
strm:TMemoryStream;
quality:Single;
begin
strm:=TMemoryStream.Create;
bmp:=TGPBitmap.Create('..\..\02.png');
try
quality:=80.0; //品質(0~100)
WebpEncode(strm, bmp, quality);
strm.SaveToFile('..\..\02.webp');
finally
strm.Free;
bmp.Free;
end;
end;
webpファイルをpng画像変換する
webpファイルをpngに画像変換するには以下ソースコードです。
libwebp.dll ファイルを実行ファイルと同じ位置にコピーして実行する必要があります。
また、libwebp.pas、Vcl.WebpImage.pas、WebpHelpers.pas ファイルをプロジェクトフォルダにコピーする必要があります。
uses Winapi.GDIPAPI, winapi.GDIPOBJ, libwebp, WebpHelpers;
procedure TForm1.Button3Click(Sender: TObject);
var bmp:TGPBitmap;
strm:TMemoryStream;
data:PByte;
begin
strm:=TMemoryStream.Create();
try
strm.LoadFromFile('..\..\01.webp');
WebpDecode(strm, data, bmp);
bmp.Save('..\..\01.png',gPNG);
finally
bmp.Free;
strm.Free;
WebPFree(data);
end;
end;
TWebPImage
TWebPImageコンポーネントを使うとフォームなどに直接表示できるようです。
uses Winapi.GDIPAPI, winapi.GDIPOBJ, libwebp, WebpHelpers, Vcl.WebpImage;
procedure TForm1.Button4Click(Sender: TObject);
var webp:TWebPImage;
graphics:TGPGraphics;
bmp:TBitmap;
begin
webp:=TWebpImage.Create(self);
webp.Parent:=self;
webp.LoadFromFile('..\..\01.webp');
webp.Left:=0;
webp.Top:=0;
webp.Width:=webp.Bitmap.GetWidth;
webp.Height:=webp.Bitmap.GetHeight;
end;
