この問題は、lib/Varien/Image/Adapter/Gd2.php 内のサイズ変更関数に含まれる php 関数 imagecopyresampled に関係しています。スムーズにサイズ変更された画像を作成するために発生する丸めの問題がいくつかあります。
私の解決策は、画像のサイズを変更した後、画像内の非常に明るい灰色のピクセルを純粋な白に変更することです。これを行うには、まず lib/Varien/Image/Adapter/Gd2.php を app/code/local/Varien/Image/Adapter/Gd2.php にコピーします。
次に、サイズ変更関数内で次のコードを見つけます (312 行目あたり)。
// resample source image and copy it into new frame
imagecopyresampled(
$newImage,
$this->_imageHandler,
$dstX, $dstY,
$srcX, $srcY,
$dstWidth, $dstHeight,
$this->_imageSrcWidth, $this->_imageSrcHeight
);
次に、下に次のコードを追加します。
// Clean noise on white background images
if ($isTrueColor) {
$colorWhite = imagecolorallocate($newImage,255,255,255);
$processHeight = $dstHeight+$dstY;
$processWidth = $dstWidth+$dstX;
//Travel y axis
for($y=$dstY; $y<($processHeight); ++$y){
// Travel x axis
for($x=$dstX; $x<($processWidth); ++$x){
// Change pixel color
$colorat=imagecolorat($newImage, $x, $y);
$r = ($colorat >> 16) & 0xFF;
$g = ($colorat >> 8) & 0xFF;
$b = $colorat & 0xFF;
if(($r==253 && $g == 253 && $b ==253) || ($r==254 && $g == 254 && $b ==254)) {
imagesetpixel($newImage, $x, $y, $colorWhite);
}
}
}
}
Magento のキャッシュ管理から画像キャッシュをフラッシュすると、新しいディスプレイ用のより良い画像が得られるはずです。これを実装する際に注意すべきことはほとんどありません。最初に画像を再生成するときにパフォーマンスがわずかに低下します。また、非常に明るいグレーが削除されているため、影のある画像のエッジがよりシャープになる場合があります。