PHPでは、 GDライブラリを使用して、サムネイルの生成を含む画像を処理できます。 ImageColorallocatealpha関数は、透明な色を透明な画像に割り当てるのに役立ちます。次に、この関数を使用して透明な画像用のサムネイルを作成する方法について一歩ずつ段階的に説明します。
まず、PHP環境でGDライブラリが有効になっていることを確認してください。 GDライブラリが有効になっているかどうかを確認できます。
php -m | grep gd
GDライブラリがインストールされていない場合は、適切なコマンドを使用してインストールします(たとえば、Ubuntuにsudo apt-getインストールPHP-GDを使用して)。
透明な画像用のサムネイルを作成するには、最初に元の画像をロードする必要があります。透明な背景を持つPNGまたはGIFファイルを扱っていると仮定すると、 ImageCreateFrommpngまたはImageCreateFromgifを使用して画像をロードできます。
$image = imagecreatefrompng('example.png');
これにより、現在のディレクトリにあるexample.pngファイルがロードされます。
サムネイルを生成するには、新しい画像キャンバスを作成し、透明な背景があることを確認する必要があります。透明性を確保するには、最初に正しい透明な背景を設定し、 ImageColorallocatealphaを使用して透明な色を割り当てる必要があります。
// 元の画像の幅と高さを取得します
$width = imagesx($image);
$height = imagesy($image);
// サムネイルの幅と高さを設定します
$new_width = 100;
$new_height = 100;
// 新しい画像キャンバスを作成します,透明な背景として設定します
$thumb = imagecreatetruecolor($new_width, $new_height);
// 透明な背景に色を割り当てます
$transparent = imagecolorallocatealpha($thumb, 0, 0, 0, 127); // 0, 0, 0 黒です,127 完全な透明性を示します
imagefill($thumb, 0, 0, $transparent);
// 画像の透明性を有効にします
imagesavealpha($thumb, true);
このコードでは、 ImageColorallocatealpha($ Thumb、0、0、0、127)を使用して、透明な背景色をサムネイルに割り当てます。127は完全な透明性を表します。
次に、 ImageCopyResampled関数を使用して、元の画像を新しいキャンバスにスケーリングします。
// 元の画像をサムネイルキャンバスにスケーリングしてコピーします
imagecopyresampled($thumb, $image, 0, 0, 0, 0, $new_width, $new_height, $width, $height);
サムネイルが生成されたら、ファイルに保存するか、ブラウザに直接出力することを選択できます。
// サムネイルをファイルとして保存します
imagepng($thumb, 'thumb_example.png');
// またはブラウザに直接出力します
header('Content-Type: image/png');
imagepng($thumb);
// メモリをきれいにします
imagedestroy($image);
imagedestroy($thumb);
これが完全なコードの例です。
<?php
// 元の画像をロードします
$image = imagecreatefrompng('example.png');
// 元の画像の幅と高さを取得します
$width = imagesx($image);
$height = imagesy($image);
// サムネイルの幅と高さを設定します
$new_width = 100;
$new_height = 100;
// 新しい画像キャンバスを作成します,透明な背景として設定します
$thumb = imagecreatetruecolor($new_width, $new_height);
// 透明な背景に色を割り当てます
$transparent = imagecolorallocatealpha($thumb, 0, 0, 0, 127); // 0, 0, 0 黒です,127 完全な透明性を示します
imagefill($thumb, 0, 0, $transparent);
// 画像の透明性を有効にします
imagesavealpha($thumb, true);
// 元の画像をサムネイルキャンバスにスケーリングしてコピーします
imagecopyresampled($thumb, $image, 0, 0, 0, 0, $new_width, $new_height, $width, $height);
// サムネイルをファイルとして保存します
imagepng($thumb, 'thumb_example.png');
// またはブラウザに直接出力します
// header('Content-Type: image/png');
// imagepng($thumb);
// メモリをきれいにします
imagedestroy($image);
imagedestroy($thumb);
?>