Проблема связана с функцией php imagecopyresampled в функции изменения размера в lib / Varien / Image / Adapter / Gd2.php, есть некоторые проблемы с округлением, которые возникают при создании плавно изменяемого размера изображения.
Мое решение состоит в том, чтобы просто изменить любые очень светло-серые пиксели изображения на чисто белый после изменения размера изображения.Для этого сначала скопируйте 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, и у вас должны быть более красивые изображения для новых дисплеев.Несколько вещей, на которые следует обратить внимание при реализации этого, при первом создании изображений снова наблюдается небольшое снижение производительности, и у изображений с тенями могут быть более острые края, поскольку очень светлые серые цвета были удалены.