Codeigniter で画像操作ライブラリを使用しており、比率を維持しながら最大幅 278 ピクセルになるように画像のサイズを変更する必要があります。また、画像が 400px を超えないようにする必要があります。
$this->image_lib->resize()
を使用して再度実行することでこれを実行しようとしています$this->image_lib->crop()
が、トリミングに干渉するサイズ変更に問題があります。
以下に 2 つのモデルを示します。
public function create_thumb($path) {
$data = $this->upload->data();
if ($data['image_width'] >= 278):
$config['image_library'] = 'gd2';
$config['source_image'] = $path;
$config['create_thumb'] = FALSE;
$config['maintain_ratio'] = TRUE;
$config['width'] = 278;
$config['height'] = 400;
$config['quality'] = '90%';
$config['master_dim'] = 'width';
$this->load->library('image_lib', $config);
if ($this->image_lib->resize()):
$this->image_lib->clear();
endif;
endif;
$this->crop_image($path);
return false;
}
// Make max image size 278x400
public function crop_image($path) {
list($width, $height) = getimagesize($path);
$config['image_library'] = 'gd2';
$config['source_image'] = $path;
$config['x_axis'] = '0';
$config['y_axis'] = '0';
$config['maintain_ratio'] = FALSE;
$config['width'] = $width;
$config['height'] = 400;
$config['quality'] = '100%';
$this->load->library('image_lib', $config);
if ($this->image_lib->crop())
{
return true;
}
return false;
}
コントローラーから直接 crop_image() を呼び出すと、期待どおりにトリミングされます。ただし、create_thumb() から呼び出されると、エラーが発生しますYour server does not support the GD function required to process this type of image.
。以前に画像をトリミングでき、GD は phpinfo() に従ってインストールされているため、なぜこのエラーが発生するのか混乱しています。
問題はimage_libを2回ロードすることに関連していると思いますが、それで$this->image_lib->clear();
問題は解決すると思いましたか?
私は何を間違っていますか?画像のサイズを最大幅 278 ピクセル、高さ最大 400 ピクセルに変更するより良い方法はありますか?