バージョン選択

フォーラム

メニュー

オンライン状況

40 人のユーザが現在オンラインです。 (20 人のユーザが フォーラム を参照しています。)
登録ユーザ: 0
ゲスト: 40
もっと...

サイト内検索

バグ報告 > フロント機能 > 続:モバイル用イメージの変換に関して

フロント機能

新規スレッドを追加する

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
kishik
投稿日時: 2009/5/12 13:20
対応状況: −−−
仙人
登録日: 2009/4/3
居住地: 東京
投稿: 382
続:モバイル用イメージの変換に関して
表題の
「モバイル用イメージの変換に関して」
のスレッドでソースを読んだ際に
いくつか気になったことがあったのですが・・・
スレ主さんの意図からは少しずれるので新しく作りました。

気になったのは2つ。

(1)おそらく複数画像を掲載するときに、
画像の大きさが何倍か違うと無駄にリサイズ
(またはJPEGだと画質が無駄に落ちる)と思います。

(2)モバイル用の画像は
/html/upload/mobile_image/
以下に最終的なファイルが作られるのですが、
元のURLが同じ画像でも修正日が違うだけで
このディレクトリに別の画像が作成され、
以前のものは削除されません。
不要なファイルが増える一方のはずです。
さらにハッシュを使っているため、
どれがどのファイルなのかすぐには分からないため、
手動で消すのは大変な作業になります。


-----
http://ec-cube-mall.jp/
http://ec-cube.ec-orange2.jp/
http://wiki.ec-orange2.jp/
seasoft
投稿日時: 2009/5/12 13:40
対応状況: −−−
登録日: 2008/6/4
居住地:
投稿: 7333
Re: 続:モバイル用イメージの変換に関して
(1)
経験則的な話ですが、GIFなどのインデックスカラー画像を GD で縮小をする場合、JPEG で出力する方がきれいな場合も結構あったりします。

現状を把握していませんが、縮小の必要が無く、端末が元の画像フォーマットに対応している場合、オリジナル画像を読みにいって欲しい気はします。


(2)
削除を行うのは面倒な気がするので、ハッシュ名には日時情報を含めずに上書きで処理されると良いのかなと思います。

ファイルやサーバの日時を信頼することにして、オリジナルファイルとキャッシュファイルの日時を比較してはいかがでしょう? 若干強引ですが、キャッシュファイルの更新日時をオリジナルファイルのもので touch してしまうのもアリかも。


----------------
Seasoft
こちらでの投稿は、アイディア程度に留めさせていただいております。
個別案件の作業は有償で承っております。お気軽にご相談ください。

kishik
投稿日時: 2009/5/12 13:46
対応状況: −−−
仙人
登録日: 2009/4/3
居住地: 東京
投稿: 382
Re: 続:モバイル用イメージの変換に関して
(1)
本来縮小の必要がないはずの画像も
サイズの大きく違う画像が複数ある場合は
リサイズされてしまうバグがあります。

(2)
日時情報を含めずに上書きするようにするのは2箇所変えるだけな
ので簡単なんですが、株式会社ロックオンさんに提案しようかな。。

ちなみにチケットに登録しました。
http://svn.ec-cube.net/open_trac/ticket/458


-----
http://ec-cube-mall.jp/
http://ec-cube.ec-orange2.jp/
http://wiki.ec-orange2.jp/
tao_s
投稿日時: 2009/5/13 0:10
対応状況: −−−
仙人
登録日: 2008/8/20
居住地: 東京
投稿: 794
Re: 続:モバイル用イメージの変換に関して
ちょっと乱暴ですが、ユーザーの年齢層が若い場合などは画像変換機能をoffにし、モバイルサイトの画像は全てjpgにして、ディスプレイ幅240px固定で、商品画像などリサイズ必須の画像はresizeImage.phpで変換してモバイルサイト作ったりします。


----------------
EC-CUBEカスタマイズ相談してください。
緊急のEC-CUBEの障害対応
EC-CUBEカスタマイズブログ

kick_go
投稿日時: 2009/6/10 11:55
対応状況: −−−
半人前
登録日: 2009/2/17
居住地: 岡山県
投稿: 20
Re: 続:モバイル用イメージの変換に関して
引用:
(1)
本来縮小の必要がないはずの画像も
サイズの大きく違う画像が複数ある場合は
リサイズされてしまうバグがあります。

これについては、私も散々悩まされています。

SC_MobileImage.php
if (isset($converted['outputImageName'])) {
$buffer = str_replace($value, MOBILE_IMAGE_URL . '/' . $converted['outputImageName'], $buffer);
} else {
$buffer = str_replace($images[0][$key], '<!--No image-->', $buffer);
}

とあるブログでこれをコメントアウトすればリサイズされないという記事を発見し、行ったところリサイズはされませんでした。
ですが、画像が多いサイトなどでは、i-modeブラウザー1系でキャッシュサイズオーバーとなってしまいます。

携帯ブラウザで表示した場合ですが、小さい画像が画面上側にあったとして、大きい画像が画面下側にある場合、
大きい画像は見れたものではない画質になります。
これはコンバート後の比率固定が原因かと思いますが・・・

実際のところは未だに原因特定できていないです。
image_converter.incなども怪しいかと個人的に考えていますが・・・
kishik
投稿日時: 2009/6/10 19:19
対応状況: −−−
仙人
登録日: 2009/4/3
居住地: 東京
投稿: 382
Re: 続:モバイル用イメージの変換に関して
これは携帯の総容量が10あったとします。
HTMLで2
画像(大)で6
画像(小)で2
を使ったとします。
ことのとき、本来ならばリサイズの必要はないのですが、
EC-CUBE内では平均許容画像サイズを計算していて
([総容量10] - [HTMLサイズ2]) / (画像数2) = 4
となっており、『どの画像も』この4に収まるように
リサイズする処理が入っています。

もう少し正確に各画像のサイズを見積もるロジックを入れるか、
総容量の値を大きくするか、ですね。
確か内部に持っているテーブルでは最新機種に対応できていないので、
携帯の容量上限はもう少し上がるのではないかと思います。
(未確認です)


-----
カスタマイズ承ります
http://ec-cube-mall.jp/
http://ec-cube.ec-orange2.jp/
http://wiki.ec-orange2.jp/
AMUAMU
投稿日時: 2009/6/16 19:41
対応状況: −−−
登録日: 2009/5/2
居住地: 東京都
投稿: 2712
Re: 続:モバイル用イメージの変換に関して
ちょうど、そこの携帯リサイズに関連する部分を修正していたので、ご参考までに

SC_MobileImage.php
            // 画像変換の情報をセットする
            $imageConverter = New ImageConverter();
            $imageConverter->setOutputDir(MOBILE_IMAGE_DIR);
//            $imageConverter->setImageType($imageType);
//            $imageConverter->setImageWidth($imageWidth);
//            $imageConverter->setImageHeight($imageHeight);
//            $imageConverter->setFileSize($imageFileSize);

            // HTML中のIMGタグを変換後のファイルパスに置換する
            foreach ($images[1] as $key => $value) {
                $imageConverter->setImageType($imageType); // Add
                $imageConverter->setImageWidth($imageWidth); // Add
                $imageConverter->setImageHeight($imageHeight); // Add
                $imageConverter->setFileSize($imageFileSize); // Add
                $converted = $imageConverter->execute(preg_replace('|^' . URL_DIR . '|', HTML_PATH, $value));


image_converter.inc

//  $outputImageName  = sha1($inputImagePath . '_' . $this->outputImageWidth . '_' . $this->outputFileSize . '_' . $filestat['mtime']) . '.' . $this->outputImageType;
$outputImageName  = sha1($_SERVER['PHP_SELF'] . $inputImagePath . '_' . $this->outputImageWidth . '_' . $this->outputFileSize . '_' . $filestat['mtime']) . '.' . $this->outputImageType;


元の部分はコメントアウトしてある部分です。
imageConverterのset系を呼ぶ位置を変えて毎回初期化してます。

image_converter.incの修正は、リクエストされたphp単位で画像キャッシュファイルを別にしてます。
こうしないと、ハッシュファイル名が変わらない場合があるので修正してますが画像キャッシュファイルが増える問題は増大してます・・・

複数画像の時の問題は(たぶん)解決してるかと思っています。
本当は、imgタグのwidthとheightも見るほうが良いんでしょうけど・・・。
kishik
投稿日時: 2009/6/16 20:37
対応状況: −−−
仙人
登録日: 2009/4/3
居住地: 東京
投稿: 382
Re: 続:モバイル用イメージの変換に関して
なるほど〜。

以前考えていたのは、
画像サイズは縦×横で概算して、
その比で割り当て配分計算をする・・・という感じでした。

考えてただけで、まだテスト実装してないんですが(汗)

作ったらご報告します。


-----
カスタマイズ承ります
http://ec-cube-mall.jp/
http://ec-cube.ec-orange2.jp/
http://wiki.ec-orange2.jp/
seasoft
投稿日時: 2009/6/17 22:18
対応状況: −−−
登録日: 2008/6/4
居住地:
投稿: 7333
Re: 続:モバイル用イメージの変換に関して
> 以前考えていたのは、
> 画像サイズは縦×横で概算して、
> その比で割り当て配分計算をする・・・という感じでした。

とても良いロジックだと思います。実現を期待しております。

各画像形式でオーバーヘッドがあるので、その分を考慮していただけるとなお良いと思います。

若干面倒そうなのは、極端に画像数が多くて、オーバーヘッドのみで対象機種の上限に到達したようなケースですかね。そんなケースは割り切って、最低画質を定めておいて上限オーバーで送出して良いのかなとも思います。ログが残っていると、運用カバーができて、幸せな人が増えるかも。


----------------
Seasoft
こちらでの投稿は、アイディア程度に留めさせていただいております。
個別案件の作業は有償で承っております。お気軽にご相談ください。

スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ


 



ログイン



統計情報

総メンバー数は75,050名です
総投稿数は104,352件です

投稿数ランキング

1
seasoft
7333
2
468
3217
3
AMUAMU
2712
4
nanasess
2202
5
umebius
2085
6
yuh
1664
7
red
1535
8
h_tanaka
1189
9
tsuji
942
10
fukap
907
11
shutta
835
12
tao_s
794
13 ramrun 789
14 karin 689
15 sumida 641
16
homan
633
17 DELIGHT 572
18
patapata
502
19
flealog
485
20 tonton 437
Copyright© EC-CUBE CO.,LTD. All Rights Reserved.