Webサイトを構築する際には、通常、画像を適切なサイズに縮小する必要があります。png画像に透明色がある場合、jpg形式で縮小すると、透明色になります。失われます。では、透明な色を維持するにはどのように対処すればよいのでしょうか?
gd ライブラリの主に 2 つのメソッドを使用します。
imagecolorallocatealpha カラー + アルファを割り当てます
imagesavealpha は、PNG 画像を保存するときに完全なアルファ チャネル情報を保存するように設定されています
- //ソース画像の gd 画像識別子を取得します
- $srcImg = imagecreatefrompng('./src.png');
- $srcWidth = imagex($ srcImg );
- $srcHeight = imagey($srcImg);
-
- //新しい画像を作成します
- $newWidth =round($srcWidth / 2);
- $newHeight =round($srcHeight / 2);
- $newImg = imagecreatetruecolor ($ newWidth, $newHeight);
- //カラー + アルファを割り当て、新しい画像にカラーを塗りつぶします
- $alpha = imagecolorallocatealpha($newImg, 0, 0, 0, 127);
- imagefill($newImg, 0, 0 , $ alpha);
-
- //ソース画像を新しい画像にコピーし、PNG 画像を保存するときに完全なアルファ チャネル情報を保存するように設定します
- imagecopyresampled($newImg, $srcImg, 0, 0, 0, 0, $newWidth, $ newHeight, $srcWidth, $srcHeight);
- imagesavealpha($newImg, true);
- imagepng($newImg, './dst.png');
コードをコピー
|