我终于轮到整理我的网站后几大隆起。我遇到图片大小调整的问题。Opencart选项 - 图像调整大小
的代码如下:这是控制图像大小:
'image' => $this->model_tool_image->resize($option_value['image'], 285, 85),
这使得所有图片285 X 85
我的问题是,一个自定义的页面上我有6x1的选项,另外3倍等等。因此,我需要图像具有不同的尺寸,最好在重新加载后保持它们的比例(尽管图像在实际中更大 - 即855x255)。
我试过$ auto,max_width = 100%(取代285/85)等等,但没有效果。
我猜选项大小将来自样式表的控制,但对我的生活,4个小时的搜索后,我找不到要摆脱这种代码的方式,并为它工作,我想。
我想不出另一种方式来修改样式表以外的图像大小,并且到“auto”(size)的任何关系都是多余的!
它的建议之前,基金是处于绝对0。因此,我无法购买扩展/ MODS等等。我提前道歉
进一步加入:此代码:
'image' => $this->model_tool_image->resize($option_value['image'], $width == $auto, $height == $auto),
带来的图像到原来的大小,但给出了一个错误:
“通知:未定义变量:宽度在C:\ xampp \ htdocs \ OC \ vqmod \ vqcache \ vq2-catalog_controller_product_product.php on line 373“
这是上面的代码行(带有$ auto)。
所以,我可以添加到我的图像控制器,或或其他东西,允许许多不同大小的图像的多个调整大小,给予一半大小的图像?
这里是我想要做的(以图像形式)
http://imageshack.us/photo/my-images/152/optionsimages.png/
2日编辑:
我一直是这样玩弄3天,并已找遍已知的资源。为了帮助缘故,这是代码为:系统/库/ image.php
/**
*
* @param width
* @param height
* @param default char [default, w, h]
* default = scale with white space,
* w = fill according to width,
* h = fill according to height
*
*/
public function resize($width = 0, $height = 0, $default = '') {
if (!$this->info['width'] || !$this->info['height']) {
return;
}
$xpos = 0;
$ypos = 0;
$scale = 1;
$scale_w = $width/$this->info['width'];
$scale_h = $height/$this->info['height'];
if ($default == 'w') {
$scale = $scale_w;
} elseif ($default == 'h'){
$scale = $scale_h;
} else {
$scale = min($scale_w, $scale_h);
}
if ($scale == 1 && $scale_h == $scale_w && $this->info['mime'] != 'image/png') {
return;
}
$new_width = (int)($this->info['width'] * $scale);
$new_height = (int)($this->info['height'] * $scale);
$xpos = (int)(($width - $new_width)/2);
$ypos = (int)(($height - $new_height)/2);
$image_old = $this->image;
$this->image = imagecreatetruecolor($width, $height);
if (isset($this->info['mime']) && $this->info['mime'] == 'image/png') {
imagealphablending($this->image, false);
imagesavealpha($this->image, true);
$background = imagecolorallocatealpha($this->image, 255, 255, 255, 127);
imagecolortransparent($this->image, $background);
} else {
$background = imagecolorallocate($this->image, 255, 255, 255);
}
imagefilledrectangle($this->image, 0, 0, $width, $height, $background);
imagecopyresampled($this->image, $image_old, $xpos, $ypos, 0, 0, $new_width, $new_height, $this->info['width'], $this->info['height']);
imagedestroy($image_old);
$this->info['width'] = $width;
$this->info['height'] = $height;
}
出于某种原因,在@param提到的“默认”,不能在所有访问!
帮我#1,你是我唯一的希望
不仅是system/library/image.php文件。你也应该改变目录/ model/tool/image.php文件。从模型调用resize方法。 – hkulekci 2013-03-10 11:52:25
谢谢,我会寻找未来的更新! – BenDB 2013-03-11 19:52:17