- Timestamp:
- 2007/10/29 12:06:29 (17 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/feature-module-update/data/class/SC_MobileImage.php
r16329 r16582 1 1 <?php 2 /** 3 * 2 /* 3 * This file is part of EC-CUBE 4 * 4 5 * Copyright(c) 2000-2007 LOCKON CO.,LTD. All Rights Reserved. 5 6 * 6 7 * http://www.lockon.co.jp/ 7 *8 8 * 9 * This program is free software; you can redistribute it and/or 10 * modify it under the terms of the GNU General Public License 11 * as published by the Free Software Foundation; either version 2 12 * of the License, or (at your option) any later version. 13 * 14 * This program is distributed in the hope that it will be useful, 15 * but WITHOUT ANY WARRANTY; without even the implied warranty of 16 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 17 * GNU General Public License for more details. 18 * 19 * You should have received a copy of the GNU General Public License 20 * along with this program; if not, write to the Free Software 21 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 9 22 * 10 23 * 端末の画面解像度にあわせて画像を変換する … … 18 31 */ 19 32 class SC_MobileImage { 20 21 22 23 24 25 26 27 33 /** 34 * 画像を端末の解像度に合わせて変換する 35 * output buffering 用コールバック関数 36 * 37 * @param string 入力 38 * @return string 出力 39 */ 40 function handler($buffer) { 28 41 29 30 31 42 // 端末情報を取得する 43 $carrier = SC_MobileUserAgent::getCarrier(); 44 $model = SC_MobileUserAgent::getModel(); 32 45 33 34 46 // 携帯電話の場合のみ処理を行う 47 if ($carrier !== FALSE) { 35 48 36 37 38 49 // HTML中のIMGタグを取得する 50 $pattern = '/<img\s+src=[\'"]([^>"]+)[\'"]\s*\/*>/i'; 51 $result = preg_match_all($pattern, $buffer, $images); 39 52 40 41 42 43 44 45 46 47 48 49 50 51 53 // 端末の情報を取得する 54 $fp = fopen(MOBILE_IMAGE_INC_PATH . "/mobile_image_map_$carrier.csv", "r"); 55 while (($data = fgetcsv($fp, 1000, ",")) !== FALSE) { 56 if ($data[1] == $model || $data[1] == '*') { 57 $cacheSize = $data[2]; 58 $imageFileSize = $data[7]; 59 $imageType = $data[6]; 60 $imageWidth = $data[5]; 61 break; 62 } 63 } 64 fclose($fp); 52 65 53 54 55 56 57 58 59 60 61 62 66 // docomoとsoftbankの場合は画像ファイル一つに利用可能なサイズの上限を計算する 67 // auはHTMLのbyte数上限に画像ファイルサイズが含まれないのでimageFileSizeのまま。 68 if ($carrier == "docomo" or $carrier == "softbank") { 69 // 計算式:(利用端末で表示可能なcacheサイズ - HTMLのバイト数 - 変換後の画像名のバイト数(目安値) ) / HTML中の画像数 70 $temp_imagefilesize = ($cacheSize - strlen($buffer) - (140 * $result) ) / $result; 71 // 計算結果が端末の表示可能ファイルサイズ上限より小さい場合は計算結果の値を有効にする 72 if ($temp_imagefilesize < $imageFileSize) { 73 $imageFileSize = $temp_imagefilesize; 74 } 75 } 63 76 64 65 66 67 68 69 77 // 画像変換の情報をセットする 78 $imageConverter = New ImageConverter(); 79 $imageConverter->setOutputDir(MOBILE_IMAGE_DIR); 80 $imageConverter->setImageType($imageType); 81 $imageConverter->setImageWidth($imageWidth); 82 $imageConverter->setFileSize($imageFileSize); 70 83 71 72 73 74 75 76 77 78 79 80 81 82 84 // HTML中のIMGタグを変換後のファイルパスに置換する 85 foreach ($images[1] as $key => $value) { 86 $converted = $imageConverter->execute(preg_replace('|^' . URL_DIR . '|', HTML_PATH, $value)); 87 if (isset($converted['outputImageName'])) { 88 $buffer = str_replace($value, MOBILE_IMAGE_URL . '/' . $converted['outputImageName'], $buffer); 89 } else { 90 $buffer = str_replace($images[0][$key], '<!--No image-->', $buffer); 91 } 92 } 93 } 94 return $buffer; 95 } 83 96 } 84 97 ?>
Note: See TracChangeset
for help on using the changeset viewer.