モバイルサイトの画像強制リサイズを防ぐ:EC-CUBE2.11.1
EC-CUBEで携帯サイトを制作するとき、デフォルトのままでは
画像の強制リサイズがかかってしまい
作った画像がかなり劣化して表示されてしまいます。
これを防ぐ方法として、正しいかはわかりませんが
とりあえずきれいに画像が表示されるようになったので
その方法をメモ。
/data/class/SC_MobileImage.php
の
// docomoとsoftbankの場合は画像ファイル一つに利用可能なサイズの上限を計算する // auはHTMLのbyte数上限に画像ファイルサイズが含まれないのでimageFileSizeのまま。 if ($carrier == 'docomo' or $carrier == 'softbank') { if( $result != false && $result > 0){ // 計算式:(利用端末で表示可能なcacheサイズ - HTMLのバイト数 - 変換後の画像名のバイト数(目安値) ) / HTML中の画像数 $temp_imagefilesize = ($cacheSize - strlen($buffer) - (140 * $result) ) / $result; } else { // 計算式:(利用端末で表示可能なcacheサイズ - HTMLのバイト数 ) $temp_imagefilesize = ($cacheSize - strlen($buffer) ); } // 計算結果が端末の表示可能ファイルサイズ上限より小さい場合は計算結果の値を有効にする if ($temp_imagefilesize < $imageFileSize) { $imageFileSize = $temp_imagefilesize; } }
と
// HTML中のIMGタグを変換後のファイルパスに置換する foreach ($images[1] as $key => $path) { $realpath = html_entity_decode($path, ENT_QUOTES); $realpath = preg_replace('|^' . ROOT_URLPATH . '|', HTML_REALDIR, $realpath); $converted = $imageConverter->execute($realpath); if (isset($converted['outputImageName'])) { $buffer = str_replace($path, MOBILE_IMAGE_URLPATH . '/' . $converted['outputImageName'], $buffer); } else { $buffer = str_replace($images[0][$key], '<!--No image-->', $buffer); } }
という2箇所の部分をすべてコメントアウトすればOK
これでとりあえず画像は奇麗に表示されるようになりました!