zencartその後

エラーやらワーニングの山を一通り直して本丸にかかりました。
どうも見てみると書いてある通りに動いているようです(あたりまえ)。画像をアップロードしていないのにサイズ変更してしまうのはダメだろうと思いつつ、対症療法を行いました。

1. 商品を登録する際に大きな画像を小さい画像と中くらいの画像、そしてそのままの画像とサイズ変更をするように設定。

admin/includes/modules/update_product.php
149行目あたり

// future image handler code
define(‘IMAGE_MANAGER_HANDLER’, 0);
define(‘DIR_IMAGEMAGICK’, ”);

// future image handler code
define(‘IMAGE_MANAGER_HANDLER’, 1);
define(‘DIR_IMAGEMAGICK’, ‘imagemagick群の含まれているディレクトリ’);

に。(// future image handler codeに一抹の不安)
これで画像の縮小等はできました(ひょっとするとimagesディレクトリにmediumとかlargeとかいうフォルダを作る必要があるかもしれません)。

2.サムネイルから中くらいのサイズの画像を作らせない処理

どうも管理画面で商品の変更/追加のプレビューの状態では画像ディレクトリにアップロードしたままのファイルが存在し、次の「更新」ボタンをクリックするとImageMagickの処理に入るようです。
ということで、ImageMagickの処理に入るまえに、存在するファイルの画像サイズを取得し、すでにサムネイルになっているようであれば処理をしない(=100×75の画像から320×240の画像を作らない)ようにしてみました。

先ほどの // future image handler codeあたり以降

// future image handler code
define(‘IMAGE_MANAGER_HANDLER’, 1);
define(‘DIR_IMAGEMAGICK’, ‘/usr/local/bin/’); //例えばのディレクトリ
$filename = zen_get_products_image((int)$products_id);
$filename = DIR_FS_CATALOG . DIR_WS_IMAGES . $filename;
$extent = getimagesize($filename);

if ($new_image == ‘true’ and IMAGE_MANAGER_HANDLER >= 1 and $extent[0] > 100) {

$src= DIR_FS_CATALOG . DIR_WS_IMAGES . zen_get_products_image((int)$products_id);

でとりあえず動いております。


コメントを残す

メールアドレスが公開されることはありません。

3 + 6 =