トップへ(mam-mam.net/)

DelphiでWebP画像変換|delphi-webpライブラリの使い方とサンプルコード

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;