PNG のサイズ変更と小さなファイル サイズの維持に問題がありました。解決策はこちらにあります。
ただし、PNG のサイズを変更すると、画質に関する問題が発生しました。私が見る限り、GD はインデックス付きの 8 ビット カラー パレットを使用しており、テキストが歪んで色が失われます。以下を参照してください。
- 元の画像
- 上記の解決策で画像のサイズを変更
- 微調整による画像のサイズ変更²
²スタックオーバーフローでここで見つけた微調整のアイデア: トゥルーカラー画像を作成し、サイズを変更して、新しい画像にコピーするため、リサンプリングされた結果に基づいてパレットが決定され、画像でわかるように画質が向上します上記。
// create new image
$newImageTmp = imagecreatetruecolor($newwidth,$newheight);
// we create a temporary truecolor image
// do the image resizing by copying from the original into $newImageTmp image
imagecopyresampled($newImageTmp,$src,0,0,0,0,$newwidth,$newheight,$width,$height);
// create output image
$newImage = imagecreate($newwidth,$newheight);
// copy resized truecolor image onto index-color image
imagecopy($newImage,$newImageTmp,0,0,0,0,$newwidth,$newheight);
// write image to buffer and save in variable
ob_start(); // stdout --> buffer
imagepng($newImage,NULL,6);
$newImageToSave = ob_get_contents(); // store stdout in $newImageToSave
ob_end_clean(); // clear buffer
// remove images from php buffer
imagedestroy($src);
imagedestroy($newImageTmp);
imagedestroy($newImage);
問題: どちらの結果も満足できるものではありません。
1. カラー パレットを決定し、2. 画像のほとんどの色を維持して、3. PNG が元の画像と同じように見え、許容できるファイル サイズになるようにする方法があるに違いないと確信しています。
現在、PNG ではなく JPG のみを使用しています。しかし、解決策をご存知でしたら、私/私たちに知らせていただければ幸いです.
ありがとうございました!