バグ報告 > フロント機能 > モバイル用イメージの変換に関して |
フロント機能
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | 下へ |
投稿者 | スレッド |
---|---|
tao_s |
投稿日時: 2009/5/11 23:15
対応状況: −−−
|
仙人 ![]() ![]() 登録日: 2008/8/20 居住地: 東京 投稿: 805 |
Re: モバイル用イメージの変換に関して 2.3はEC-CUBEが出力バッファを読んでimgタグがあった場合に画像を変換しています。
SC_Helper_MobileのlfMobileInitOutput()で、モバイルの場合のフィルタを設定しています。 過去にここで端末毎の細かいタグの変換をした事があります。 画像の変換はSC_MobileImage()でimage_converter.incを読み込んで行っています。 画像の高さに関しては、基本指定しないで入力画像と出力画像の横幅の比から算出していますが、どっかで最初の画像の高さを初期化し忘れているんではないでしょうか?
|
QAZU |
投稿日時: 2009/5/12 9:44
対応状況: −−−
|
半人前 ![]() ![]() 登録日: 2007/3/7 居住地: 投稿: 26 |
Re: モバイル用イメージの変換に関して kishikさん
引用:
そうなんです。 問題はこの自動変換で困っているんです。 PC用はimg/header/logo.gifを読んでくれるんですが、携帯用は各キャリアごとに変換されているっぽく、「upload/mobile_image/」の中に細かく格納されています。 |
QAZU |
投稿日時: 2009/5/12 9:46
対応状況: −−−
|
半人前 ![]() ![]() 登録日: 2007/3/7 居住地: 投稿: 26 |
Re: モバイル用イメージの変換に関して tao_sさん
引用:
バグ箇所の推理有難うございます。 プログラムの強い者に相談してみます。 |
Masashige |
投稿日時: 2009/5/12 11:39
対応状況: −−−
|
長老 ![]() ![]() 登録日: 2009/4/1 居住地: 投稿: 200 |
Re: モバイル用イメージの変換に関して あ、以前遭遇しました。
image_converter.incの33〜35行目ですね。2枚目以降の呼び出しで1枚目の情報が残ってしまうようで、ここがスルーされます。 面倒だったので(えー!?)33、35行目をコメントアウトして対応しました。どうせキャッシュされるし、納期も無茶だし、まぁいっか!みたいな。そんなんしてたらwidth固定とかも直したくなるし…。 書き換え後、/html/upload/mobile_image/内のキャッシュファイルを削除するといいかもしれません。いつか頭の良い人がなんとかしてくれるの待ちです(スイマセン…)。 |
seasoft |
投稿日時: 2009/5/12 11:50
対応状況: −−−
|
神 ![]() ![]() 登録日: 2008/6/4 居住地: 投稿: 7369 |
Re: モバイル用イメージの変換に関して Masashige 様
ビンゴ!っぽいですね。 チケットにコメントしておきました。 http://svn.ec-cube.net/open_trac/ticket/414
|
QAZU |
投稿日時: 2009/5/12 12:08
対応状況: −−−
|
半人前 ![]() ![]() 登録日: 2007/3/7 居住地: 投稿: 26 |
Re: モバイル用イメージの変換に関して 自己解決・・・と言うわけではないですが、
バグの箇所を指摘していただいたので、プログラマーに頼んで確認してもらいました。 一応プログラマーから下記の部分を修正したとレポートが上がってきました。 data/image_converter.inc [32 Line] // 変換後の画像の高さが指定されていない場合、変換後の画像の横幅から求める if (is_null($this->outputImageHeight)) { $this->outputImageHeight = $inputImageHeight * ($this->outputImageWidth / $inputImageWidth); } ========================== //変換の前画像の横幅が320より小さい場合画像のサイズそのまま使う if($inputImageWidth <= 320){ $this->outputImageWidth = $inputImageWidth; $this->outputImageHeight = $inputImageHeight; } // 変換後の画像の高さが指定されていない場合、変換後の画像の横幅から求める if (is_null($this->outputImageHeight)) { if($inputImageWidth <= 320){ $this->outputImageHeight = $inputImageHeight; }else{ $this->outputImageHeight = $inputImageHeight * ($this->outputImageWidth / $inputImageWidth); } } 現在のところ、この修正で無事にイメージの変換ができております。 みなさま、ご協力有難うございました。 ちなみに、この方法が正しいかどうかはわかりません。 |
kishik |
投稿日時: 2009/5/12 12:17
対応状況: −−−
|
仙人 ![]() ![]() 登録日: 2009/4/3 居住地: 東京 投稿: 382 |
Re: モバイル用イメージの変換に関して ちょうど同じところを読んでいました。
解決方法をチケットの方にコメントしておきました。 http://svn.ec-cube.net/open_trac/ticket/414 ----- http://ec-cube-mall.jp/ http://ec-cube.ec-orange2.jp/ http://wiki.ec-orange2.jp/ |
seasoft |
投稿日時: 2009/5/12 12:40
対応状況: −−−
|
神 ![]() ![]() 登録日: 2008/6/4 居住地: 投稿: 7369 |
Re: モバイル用イメージの変換に関して QAZU 様
Width の解決について、非常に良いアイディアだと思います。 ただし、320 で固定するのは微妙な線かもしれません。端末によって、数値が変動しますので。 null チェックの上、$this->outputImageWidth で比較するのが、適切かなと思います。 まぁ、現行端末で考えれば 320 という値は、それなりに適合しているとも考えられますが。
|
kishik |
投稿日時: 2009/5/12 13:02
対応状況: −−−
|
仙人 ![]() ![]() 登録日: 2009/4/3 居住地: 東京 投稿: 382 |
Re: モバイル用イメージの変換に関して QAZUさん
その方法だと解決してませんよ。 320より大きい画像を入れてみればわかると思います。 ミソは複数画像があるときに $this->outputImageHeight が最初の1回だけNULL判定に引っかかるところなので。 ----- http://ec-cube-mall.jp/ http://ec-cube.ec-orange2.jp/ http://wiki.ec-orange2.jp/ |
QAZU |
投稿日時: 2009/5/12 15:15
対応状況: −−−
|
半人前 ![]() ![]() 登録日: 2007/3/7 居住地: 投稿: 26 |
Re: モバイル用イメージの変換に関して kishikさん
ご回答有難うございます。 チケットに書かれている事をプログラマーの方へ渡して確認しましたところ、縦横比は問題ないのですが、100*20の画像を変換した場合、240*48になってしまうようです。 横幅が240pxに指定されているとか何とか・・・ 詳しいことはわからないのですが、実際シミュレーターで見たら、画面いっぱいの幅の画像になっていました。 これは、単純に横幅だけ指定すればいいのかもしれませんが・・・ もしかしたら、こちらに別の原因があるのかも知れませんので、とりあえずご報告まで。 根本的な解決ではないにせよ、とりあえずこちら側のプログラムで縦横のピクセルを指定はせず、問題なく表示できているので現状はそれで走ることにします。 現行の携帯サイトで、幅320px以上の画像を作る事はあまりないと思いますので・・・ |
« 1 (2) 3 » |
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | トップ |