source: temp/branches/mobile/data/include/image_converter.inc @ 11457

Revision 11457, 3.8 KB checked in by rebelt, 15 years ago (diff)

修正です。

  • Property svn:eol-style set to native
Line 
1<?php
2/**
3 * ²èÁü¥Õ¥¡¥¤¥ë¤ÎÊÑ´¹¤ò¹Ô¤¦
4 */
5class ImageConverter {
6    var $outputImageDir;        // ÊÑ´¹¸å¤Î²èÁü¤ÎÊݸÀè
7    var $outputImageType;       // ÊÑ´¹¸å¤Î²èÁü¤Î·Á¼°
8    var $outputImageWidth;      // ÊÑ´¹¸å¤Î²èÁü¤Î²£Éý
9    var $outputImageHeight;     // ÊÑ´¹¸å¤Î²èÁü¤Î¹â¤µ
10    //var $outputImageFileSize; // ÊÑ´¹¸å¤Î²èÁü¤Î¥Õ¥¡¥¤¥ë¥µ¥¤¥º
11
12    // ¥³¥ó¥¹¥È¥é¥¯¥¿
13    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;
19    }
20
21    // ÊÑ´¹¼Â¹Ô
22    function execute($inputImagePath) {
23        // Á°½èÍý
24        $filestat         = @stat($inputImagePath);
25        $imagesize        = getimagesize($inputImagePath);
26        $inputImageWidth  = $imagesize[0];
27        $inputImageHeight = $imagesize[1];
28        $inputImageType   = $imagesize[2];
29        $outputImageName  = base64_encode($inputImagePath . '_' . $this->outputImageWidth . '_' . $filestat['mtime']) . '.' . $this->outputImageType;
30        $outputImagePath  = $this->outputImageDir . '/' . $outputImageName;
31
32        // ÊÑ´¹¸å¤Î²èÁü¤Î¹â¤µ¤¬»ØÄꤵ¤ì¤Æ¤¤¤Ê¤¤¾ì¹ç¡¢ÊÑ´¹¸å¤Î²èÁü¤Î²£Éý¤«¤éµá¤á¤ë
33        if (is_null($this->outputImageHeight)) {
34            $this->outputImageHeight = $inputImageHeight * ($this->outputImageWidth / $inputImageWidth);
35        }
36
37        // ¥Õ¥¡¥¤¥ë¤¬Â¸ºß¤¹¤ë¤«³Îǧ¤·¡¢Â¸ºß¤·¤Ê¤¤¾ì¹ç¤Î¤ßºîÀ®¤¹¤ë
38        if (file_exists($outputImagePath)) {
39            $info['convert'] = FALSE;
40        } else {
41            // ¸µ¥Õ¥¡¥¤¥ëºîÀ®
42            switch($inputImageType) {
43            case 1:
44                // gif
45                $tempImage = imagecreatefromgif($inputImagePath);
46                break;
47            case 2:
48                // jpeg
49                $tempImage = imagecreatefromjpeg($inputImagePath);
50                break;
51            case 3:
52                // png
53                $tempImage = imagecreatefrompng($inputImagePath);
54                break;
55            case 6:
56                // bmp
57                $tempImage = imagecreatefromwbmp($inputImagePath);
58                break;
59            }
60
61            if (!$tempImage) {
62                return false;
63            }
64
65            // ¶õ¥Õ¥¡¥¤¥ëºîÀ®
66            $outputImage = ImageCreateTruecolor($this->outputImageWidth, $this->outputImageHeight);
67            ImageCopyResampled($outputImage, $tempImage, 0, 0, 0, 0, $this->outputImageWidth, $this->outputImageHeight, $inputImageWidth, $inputImageHeight);
68
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            }
90
91            // ¥á¥â¥ê³«Êü
92            imagedestroy($tempImage);
93            imagedestroy($outputImage);
94
95            $info['convert'] = TRUE;
96        }
97
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        */
107        $info['outputImagePath']  = $outputImagePath;
108        $info['outputImageName']  = $outputImageName;
109        return $info;
110
111    }
112
113    // Setter
114    function setOutputDir($outputDir)   { $this->outputImageDir    = $outputDir;  }
115    function setImageType($imageType)   { $this->outputImageType   = $imageType;  }
116    function setImageWidth($imageWidth) { $this->outputImageWidth  = $imageWidth; }
117    // function setImageHeight($imageHeight) { $this->outputImageHeight = $imageHeight; }
118
119    // Getter
120    function getOutputDir()   { return $this->outputDir;         }
121    function getImageType()   { return $this->outputImageType;   }
122    function getImageWidth()  { return $this->outputImageWidth;  }
123    function getImageHeight() { return $this->outputImageHeight; }
124
125    /*
126     * PrivateMethod
127     */
128    function beforeExecute() {
129    }
130}
131?>
Note: See TracBrowser for help on using the repository browser.