いくつかの大きなこぶの後、ようやく自分のウェブサイトを整理する準備が整いました。画像のサイズ変更に問題があります。
画像サイズを制御するコードは次のとおりです。
'image' => $this->model_tool_image->resize($option_value['image'], 285, 85),
これにより、すべての画像が 285 x 85 になります。
私の問題は、カスタム ページに 6x1 オプション、3x オプションなどがあることです。したがって、画像をさまざまなサイズにする必要があり、できればリロード後も比率を維持する必要があります (ただし、実際には画像は大きくなりますが、855x255 など)。
$auto、max_width=100% (285/85 の代わりに) などを試しましたが、効果はありませんでした。
オプションサイズの制御はスタイルシートから来ると思いますが、私の人生では、4時間検索した後、このコードを取り除き、希望どおりに機能させる方法を見つけることができません.
スタイルシート以外に画像サイズを変更する別の方法は考えられません。これまでのところ、「自動」(サイズ) との関係は冗長です。
提案される前に、資金は絶対に 0 です。そのため、拡張機能や Mod などを購入することができません。あらかじめお詫び申し上げます
さらに追加: このコード:
'image' => $this->model_tool_image->resize($option_value['image'], $width == $auto, $height == $auto),
画像を元のサイズに戻しますが、エラーが発生します:
「通知: 未定義の変数: 373 行目の C:\xampp\htdocs\OC\vqmod\vqcache\vq2-catalog_controller_product_product.php の幅」
これは上記のコード行です ($auto を使用)。
では、画像コントローラーなどに追加して、さまざまなサイズの画像の複数のサイズ変更を許可し、半分のサイズの画像を作成できますか?
これが私がやろうとしていることです(画像形式で)
http://imageshack.us/photo/my-images/152/optionsimages.png/
2回目の編集:
私はこれを 3 日間いじっており、すべての既知のリソースを検索しました。参考までに、これは system/library/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 に記載されている「デフォルト」にまったくアクセスできません!
助けてください Stackoverflow、あなただけが私の希望です