Changeset 11458 for temp/branches/mobile


Ignore:
Timestamp:
2007/02/25 22:37:12 (19 years ago)
Author:
rebelt
Message:

修正です。

Location:
temp/branches/mobile/data
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • temp/branches/mobile/data/class/GC_MobileImage.php

    r11457 r11458  
    2929            // HTMLÃæ¤ÎIMG¥¿¥°¤ò¼èÆÀ¤¹¤ë 
    3030            $pattern = '/<img\s+src=[\'"]([^>"]+)[\'"]\s*\/*>/i'; 
    31             preg_match_all($pattern, $buffer, $images); 
     31            $result = preg_match_all($pattern, $buffer, $images); 
    3232 
    3333            // üËö¤Î¾ðÊó¤ò¼èÆÀ¤¹¤ë 
     
    3535            while (($data = fgetcsv($fp, 1000, ",")) !== FALSE) { 
    3636                if ($data[1] == $model) { 
    37                     $imageType  = $data[6]; 
    38                     $imageWidth = $data[5]; 
     37                    $cacheSize     = $data[2]; 
     38                    $imageFileSize = $data[7]; 
     39                    $imageType     = $data[6]; 
     40                    $imageWidth    = $data[5]; 
    3941                } 
    4042            } 
    4143            fclose($fp); 
     44 
     45            // docomo¤Èsoftbank¤Î¾ì¹ç¤Ï²èÁü¥Õ¥¡¥¤¥ë°ì¤Ä¤ËÍøÍѲÄǽ¤Ê¥µ¥¤¥º¤Î¾å¸Â¤ò·×»»¤¹¤ë 
     46            // au¤ÏHTML¤Îbyte¿ô¾å¸Â¤Ë²èÁü¥Õ¥¡¥¤¥ë¥µ¥¤¥º¤¬´Þ¤Þ¤ì¤Ê¤¤¤Î¤ÇimageFileSize¤Î¤Þ¤Þ¡£ 
     47            if ($carrier == "docomo" or $carrier == "softbank") { 
     48                // ·×»»¼°¡§(ÍøÍÑüËö¤Çɽ¼¨²Äǽ¤Êcache¥µ¥¤¥º - HTML¤Î¥Ð¥¤¥È¿ô - ÊÑ´¹¸å¤Î²èÁü̾¤Î¥Ð¥¤¥È¿ô(ÌܰÂÃÍ) ) / HTMLÃæ¤Î²èÁü¿ô 
     49                $temp_imagefilesize = ($cacheSize - strlen($buffer) - (140 * $result) ) / $result; 
     50                // ·×»»·ë²Ì¤¬Ã¼Ëö¤Îɽ¼¨²Äǽ¥Õ¥¡¥¤¥ë¥µ¥¤¥º¾å¸Â¤è¤ê¾®¤µ¤¤¾ì¹ç¤Ï·×»»·ë²Ì¤ÎÃͤòÍ­¸ú¤Ë¤¹¤ë 
     51                if ($temp_imagefilesize < $imageFileSize) { 
     52                    $imageFileSize = $temp_imagefilesize; 
     53                } 
     54            } 
    4255 
    4356            // ²èÁüÊÑ´¹¤Î¾ðÊó¤ò¥»¥Ã¥È¤¹¤ë 
     
    4659            $imageConverter->setImageType($imageType); 
    4760            $imageConverter->setImageWidth($imageWidth); 
     61            $imageConverter->setFileSize($imageFileSize); 
    4862 
    4963            // HTMLÃæ¤ÎIMG¥¿¥°¤òÊÑ´¹¸å¤Î¥Õ¥¡¥¤¥ë¥Ñ¥¹¤ËÃÖ´¹¤¹¤ë 
  • temp/branches/mobile/data/include/image_converter.inc

    r11457 r11458  
    88    var $outputImageWidth;      // ÊÑ´¹¸å¤Î²èÁü¤Î²£Éý 
    99    var $outputImageHeight;     // ÊÑ´¹¸å¤Î²èÁü¤Î¹â¤µ 
    10     //var $outputImageFileSize; // ÊÑ´¹¸å¤Î²èÁü¤Î¥Õ¥¡¥¤¥ë¥µ¥¤¥º 
     10    var $outputImageFileSize;   // ÊÑ´¹¸å¤Î²èÁü¤Î¥Õ¥¡¥¤¥ë¥µ¥¤¥º 
    1111 
    1212    // ¥³¥ó¥¹¥È¥é¥¯¥¿ 
    1313    function ImageConverter() { 
    14         $this->outputImageDir      = realpath(realpath(dirname( __FILE__))); 
    15         $this->outputImageType     = 'jpeg'; 
    16         $this->outputImageWidth    = 100; 
    17         $this->outputImageHeight   = NULL; 
    18         //$this->outputImageFileSize = NULL; 
     14        $this->outputImageDir    = realpath(realpath(dirname(__FILE__))); 
     15        $this->outputImageType   = 'jpeg'; 
     16        $this->outputImageWidth  = 320; 
     17        $this->outputImageHeight = NULL; 
     18        $this->outputFileSize    = 20000; 
    1919    } 
    2020 
     
    2727        $inputImageHeight = $imagesize[1]; 
    2828        $inputImageType   = $imagesize[2]; 
    29         $outputImageName  = base64_encode($inputImagePath . '_' . $this->outputImageWidth . '_' . $filestat['mtime']) . '.' . $this->outputImageType; 
     29        $outputImageName  = sha1($inputImagePath . '_' . $this->outputImageWidth . '_' . $this->outputFileSize . '_' . $filestat['mtime']) . '.' . $this->outputImageType; 
    3030        $outputImagePath  = $this->outputImageDir . '/' . $outputImageName; 
    3131 
     
    6363            } 
    6464 
    65             // ¶õ¥Õ¥¡¥¤¥ëºîÀ® 
    66             $outputImage = ImageCreateTruecolor($this->outputImageWidth, $this->outputImageHeight); 
    67             ImageCopyResampled($outputImage, $tempImage, 0, 0, 0, 0, $this->outputImageWidth, $this->outputImageHeight, $inputImageWidth, $inputImageHeight); 
     65            $scale = 1.0; 
     66            $outputImagePathTemp = $outputImagePath . '.tmp-' . rand(); 
     67            do { 
     68                // ¶õ¥Õ¥¡¥¤¥ëºîÀ® 
     69                $outputImage = ImageCreateTruecolor($this->outputImageWidth * $scale, $this->outputImageHeight * $scale); 
     70                ImageCopyResampled($outputImage, $tempImage, 0, 0, 0, 0, $this->outputImageWidth * $scale, $this->outputImageHeight * $scale, $inputImageWidth, $inputImageHeight); 
    6871 
    69             // ¥Õ¥¡¥¤¥ë½ÐÎÏ 
    70             switch($this->outputImageType) { 
    71             case 1: 
    72             case 'gif': 
    73                 imagegif($outputImage, $outputImagePath); 
    74                 break; 
    75             default: 
    76             case 2: 
    77             case 'jpg': 
    78             case 'jpeg': 
    79                 imagejpeg($outputImage, $outputImagePath); 
    80                 break; 
    81             case 3: 
    82             case 'png': 
    83                 imagepng($outputImage, $outputImagePath); 
    84                 break; 
    85             case 6: 
    86             case 'bmp': 
    87                 imagewbmp($outputImage, $outputImagePath); 
    88                 break; 
    89             } 
     72                // ¥Õ¥¡¥¤¥ë½ÐÎÏ 
     73 
     74                @unlink($outputImagePathTemp); 
     75 
     76                switch ($this->outputImageType) { 
     77                case 1: 
     78                case 'gif': 
     79                    imagegif($outputImage, $outputImagePathTemp); 
     80                    break; 
     81                default: 
     82                case 2: 
     83                case 'jpg': 
     84                case 'jpeg': 
     85                    $quality = 75; 
     86                    // ɽ¼¨²Äǽ¤Ê¥Õ¥¡¥¤¥ë¥µ¥¤¥º°Ê²¼¤Ë¤Ê¤ë¤Þ¤Ç¡¢10%¤º¤Ä¥¯¥ª¥ê¥Æ¥£¤òÄ´À°¤¹¤ë 
     87                    do { 
     88                        @unlink($outputImagePathTemp); 
     89                        imagejpeg($outputImage, $outputImagePathTemp, $quality); 
     90                        $quality -= 10; 
     91                        clearstatcache(); 
     92                    } while (filesize($outputImagePathTemp) > $this->outputFileSize && $quality > 0); 
     93                    break; 
     94                case 3: 
     95                case 'png': 
     96                    imagepng($outputImage, $outputImagePathTemp); 
     97                    break; 
     98                case 6: 
     99                case 'bmp': 
     100                    imagewbmp($outputImage, $outputImagePathTemp); 
     101                    break; 
     102                } 
     103 
     104                // ¥á¥â¥ê³«Êü 
     105                imagedestroy($outputImage); 
     106 
     107                $scale -= 0.1; 
     108                clearstatcache(); 
     109            } while (filesize($outputImagePathTemp) > $this->outputFileSize && $scale >= 0.5); 
     110 
     111            rename($outputImagePathTemp, $outputImagePath); 
    90112 
    91113            // ¥á¥â¥ê³«Êü 
    92114            imagedestroy($tempImage); 
    93             imagedestroy($outputImage); 
    94115 
    95116            $info['convert'] = TRUE; 
    96117        } 
    97118 
    98         /* 
    99         $info['inputImageWidth']   = $inputImageWidth; 
    100         $info['inputImageHeight']  = $inputImageHeight; 
    101         $info['inputImageType']    = $inputImageType; 
    102         $info['inputImagePath']    = $inputImagePath; 
    103         $info['outputImageWidth']  = $this->outputImageWidth; 
    104         $info['outputImageHeight'] = $this->outputImageHeight; 
    105         $info['outputImageType']   = $this->outputImageType; 
    106         */ 
    107119        $info['outputImagePath']  = $outputImagePath; 
    108120        $info['outputImageName']  = $outputImageName; 
     
    112124 
    113125    // Setter 
    114     function setOutputDir($outputDir)   { $this->outputImageDir    = $outputDir;  } 
    115     function setImageType($imageType)   { $this->outputImageType   = $imageType;  } 
    116     function setImageWidth($imageWidth) { $this->outputImageWidth  = $imageWidth; } 
     126    function setOutputDir($outputDir)   { $this->outputImageDir   = $outputDir;  } 
     127    function setImageType($imageType)   { $this->outputImageType  = $imageType;  } 
     128    function setImageWidth($imageWidth) { $this->outputImageWidth = $imageWidth; } 
     129    function setFileSize($fileSize)     { $this->outputFileSize   = $fileSize;   } 
    117130    // function setImageHeight($imageHeight) { $this->outputImageHeight = $imageHeight; } 
    118131 
Note: See TracChangeset for help on using the changeset viewer.