我終於輪到整理我的網站後幾大隆起。我遇到圖片大小調整的問題。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