在Magento网站上,我只是为每个产品上传一张图片,并将其用作基本的小图片和缩略图。但是,我的图片不是正方形,所以我在创建的缩略图中添加了黑色背景。任何想法如何改变为白色背景?
http://www.magentocommerce.com/?ACT=25&fid=10&aid=10785_osKeOnfKFLFvgqVYbr0j&board_id=1
我已经搜索过这个,但在任何地方找不到合适的答案......
答案 0 :(得分:3)
我找到了解决方法。副作用是用于图像调整大小的类将用白色(甚至是透明的)填充所有图像,但这并不会影响Magento,因为它无论如何都不使用透明填充。所以要解决这个问题:
lib\Varien\Image\Adapter\Gd2.php
找到这一行
$this->_fillBackgroundColor($newImage);
并将其替换为此行
$this->_fillBackgroundColor($newImage,$frameWidth,$frameWidth);
找到这一行
private function _fillBackgroundColor(&$imageResourceTo)
并将其替换为
private function _fillBackgroundColor(&$imageResourceTo,$w,$h)
找到此代码
if (!imagefill($imageResourceTo, 0, 0, $color)) {
throw new Exception("Failed to fill image background with color {$r} {$g} {$b}.");
}
并将其替换为
imagefilledrectangle($imageResourceTo,0,0,$w,$h,$color);
就是这样。问题来自Gd2中的PHP函数imagefill
,而不是某些setings。这是使用imagefilledrectangle
的解决方法,并为我工作。希望它也能解决你的问题。
答案 1 :(得分:3)
来自Adi's answer的第4点的更正:
4。找到这个代码
if (!imagefill($imageResourceTo, 0, 0, $color)) { throw new Exception("Failed to fill image background with color {$r} {$g} {$b}."); }
并将其替换为:
if (!imagefilledrectangle($imageResourceTo,0,0,$w,$h,$color)) {
throw new Exception("Failed to fill image background with color {$r} {$g} {$b}.");
答案 2 :(得分:2)
Magento中使用的Varien_Image提供了设置缩放图像的背景颜色的可能性。在输出图像(调整大小方法?)以使背景变白之前,您可以在某处使用类似的代码:
$image->backgroundColor(array(255, 255, 255));
答案 3 :(得分:0)
Adi的回答让我朝着正确的方向前进,但我的图像上仍然有一条黑线。我发现当裁剪图像时,Magento会创建一个画布背景,然后在它上面创建图像。画布在我的图像上产生黑线。
我设法通过添加Adi的更改来修复它,然后另外,在crop()函数中(在同一个文件中),我添加了:
list($r, $g, $b) = $this->_backgroundColor;
$bg_color = imagecolorallocate($canvas, $r, $g, $b);
imagefill($canvas, 0, 0, $bg_color);
在功能之后(第554行,在adi更改之后):
imagecopyresampled
现在我的图片有他们应该拥有的背景颜色!
另外需要注意的是,不应直接在核心中编辑此文件,而应将其复制到:
app/code/local/Varien/Image/Adapter/Gd2.php
希望这可以帮助有人解决同样的问题。