我有一位客户对他们的产品缩略图在Magento上呈现的方式非常不满意。
两个帐户的狡猾外表显而易见:
我删除了所有压缩,将所有质量设置为100%,刷新了图像缓存,进行了实验,破解,并将其修复了几十次,似乎没有任何效果。
这个版本的Magento是ver。 1.4.2.0
是否有人在这里遇到同样的问题,如果是这样,你能设法解决它吗?
答案 0 :(得分:22)
问题与lib / Varien / Image / Adapter / Gd2.php中的resize函数中的php函数imagecopyresampled有关,为了使图像平滑调整,会出现一些舍入问题。
我的解决方案是在调整图像大小后,将图像中的任何非常浅的灰色像素更改为纯白色。为此,首先将lib / Varien / Image / Adapter / Gd2.php复制到app / code / local / Varien / Image / Adapter / Gd2.php
接下来在resize函数内找到以下代码(第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中的缓存管理中刷新图像缓存,您应该为新显示器提供更好的图像。实现这一点时,很少有注意事项,第一次生成图像时会有很小的性能下降,带有阴影的图像可能会有更清晰的边缘,因为已经去除了浅灰色。
答案 1 :(得分:6)
尝试以下示例
echo Mage::helper('catalog/image')->init($product, 'small_image')->resize(180, 210)->setQuality(50);
答案 2 :(得分:3)
您可以将自己的Gd2.php文件放在本地(app / code / local / Varien / Image / Adapter / Gd2.php)中,并将质量硬连线到100%。
质量对我有用,所以我没有这样做。
您还可以在其中放置图像卷积以锐化图像,这样您就可以通过锐化来补偿调整大小的模糊。将以下内容放在'resize'函数的末尾:
$sharpenMatrix = array(array(-1,-1,-1),array(-1,24,-1),array(-1,-1,-1));
$divisor = 16;
$offset = 0;
imageconvolution($newImage, $sharpenMatrix, $divisor, $offset);
答案 3 :(得分:1)
我在其中一个项目上遇到图像质量问题。但问题不是在后端,而是在前端。图像的质量很差,因为CSS中给出的图像宽度和高度与图像文件不一样。
答案 4 :(得分:0)
quick grep显示您可以在product_image对象
上设置它app/code/core/Mage/Catalog/Helper/Image.php:105: * Set image quality, values in percentage from 0 to 100
app/code/core/Mage/Catalog/Helper/Image.php:107: * @param int $quality
app/code/core/Mage/Catalog/Helper/Image.php:110: public function setQuality($quality)
app/code/core/Mage/Catalog/Helper/Image.php:112: $this->_getModel()->setQuality($quality);
app/code/core/Mage/Catalog/Model/Product/Image.php:38: protected $_quality = 90;
app/code/core/Mage/Catalog/Model/Product/Image.php:88: * Set image quality, values in percentage from 0 to 100
app/code/core/Mage/Catalog/Model/Product/Image.php:90: * @param int $quality
app/code/core/Mage/Catalog/Model/Product/Image.php:93: public function setQuality($quality)
app/code/core/Mage/Catalog/Model/Product/Image.php:95: $this->_quality = $quality;
app/code/core/Mage/Catalog/Model/Product/Image.php:100: * Get image quality
app/code/core/Mage/Catalog/Model/Product/Image.php:106: return $this->_quality;
app/code/core/Mage/Catalog/Model/Product/Image.php:331: 'quality' . $this->_quality
app/code/core/Mage/Catalog/Model/Product/Image.php:387: $this->_processor->quality($this->_quality);
答案 5 :(得分:0)
我的一些图像遇到了同样的问题,后来我意识到那些分辨率较低的图像会变形,尝试使用超过1100 X 1100的图像,它应该可以正常工作!
答案 6 :(得分:-1)
将图像上传为PNG&#39>。它们可能不像JPG那么小,但它允许我们避免Magento调整大小功能所产生的一些图像质量问题。