source: branches/feature-module-paygent/data/lib/thumb.php @ 12044

Revision 12044, 4.5 KB checked in by naka, 14 years ago (diff)
Line 
1<?php
2# MakeThumb(½ÐÎϸµ²èÁü¥Ñ¥¹¡Ê¥Õ¥¡¥¤¥ë̾¤Þ¤Ç¡Ë, ½ÐÎÏÀè¥Õ¥©¥ë¥À¡Ê/home/hoge/ ¤Ê¤É¡Ë , ºÇÂç²£Éý , ºÇÂç½ÄÉý , ¿·¥Õ¥¡¥¤¥ë̾¡Ë
3function MakeThumb($FromImgPath , $ToImgPath , $tmpMW , $tmpMH, $newFileName = ''){
4
5# ¢¡¡þ¢¡¡¡¥Ç¥Õ¥©¥ë¥ÈÃͤÎÀßÄê¡¡¢¡¡þ¢¡
6# ɬÍפ˱þ¤¸¤ÆÊѹ¹¤·¤Æ²¼¤µ¤¤¡£
7
8# ²èÁü¤ÎºÇÂç²£Éý¡Êñ°Ì¡§¥Ô¥¯¥»¥ë¡Ë
9$ThmMaxWidth = 500;
10
11# ²èÁü¤ÎºÇÂç½ÄÉý¡Êñ°Ì¡§¥Ô¥¯¥»¥ë¡Ë
12$ThmMaxHeight = 500;
13
14# ¥µ¥à¥Í¥¤¥ë²èÁü¤ÎÀÜƬʸ»ú
15$PreWord = $head;
16
17# ¢¡¡þ¢¡¡¡ÀßÄꤳ¤³¤Þ¤Ç¡¡¢¡¡þ¢¡
18
19    //³ÈÄ¥»Ò¼èÆÀ
20    if (!$ext) {
21        $array_ext = explode(".", $FromImgPath);
22        $ext = $array_ext[count($array_ext) - 1];
23    }
24   
25    $MW = $ThmMaxWidth;
26    if($tmpMW) $MW = $tmpMW; # $MW¤ËºÇÂç²£Éý¥»¥Ã¥È 
27   
28    $MH = $ThmMaxHeight;
29    if($tmpMH) $MH = $tmpMH; # $MH¤ËºÇÂç½ÄÉý¥»¥Ã¥È
30   
31    if(empty($FromImgPath) || empty($ToImgPath)){ # ¥¨¥é¡¼½èÍý
32        return array(0,"½ÐÎϸµ²èÁü¥Ñ¥¹¡¢¤Þ¤¿¤Ï½ÐÎÏÀè¥Õ¥©¥ë¥À¤¬»ØÄꤵ¤ì¤Æ¤¤¤Þ¤»¤ó¡£");
33    }
34   
35    if(!file_exists($FromImgPath)){ # ¥¨¥é¡¼½èÍý
36        return array(0,"½ÐÎϸµ²èÁü¤¬¸«¤Ä¤«¤ê¤Þ¤»¤ó¡£");
37    }
38   
39    $size = @GetImageSize($FromImgPath);
40    $re_size = $size;
41   
42    if(!$size[2] || $size[2] > 3){ # ²èÁü¤Î¼ïÎबÉÔÌÀ or swf
43        return array(0,"²èÁü·Á¼°¤¬¥µ¥Ý¡¼¥È¤µ¤ì¤Æ¤¤¤Þ¤»¤ó¡£");
44    }
45
46    //¥¢¥¹¥Ú¥¯¥ÈÈæ¸ÇÄê½èÍý
47    $tmp_w = $size[0] / $MW;
48   
49    if($MH != 0){
50        $tmp_h = $size[1] / $MH;
51    }
52   
53    if($tmp_w > 1 || $tmp_h > 1){
54        if($MH == 0){
55            if($tmp_w > 1){
56                $re_size[0] = $MW;
57                $re_size[1] = $size[1] * $MW / $size[0];
58            }
59        } else {
60            if($tmp_w > $tmp_h){
61                $re_size[0] = $MW;
62                $re_size[1] = $size[1] * $MW / $size[0];
63            } else {
64                $re_size[1] = $MH;
65                $re_size[0] = $size[0] * $MH / $size[1];
66            }
67        }
68    }   
69   
70    # ¥µ¥à¥Í¥¤¥ë²èÁü¥Õ¥¡¥¤¥ë̾ºîÀ®½èÍý
71    $tmp = array_pop(explode("/",$FromImgPath)); # /¤Î°ìÈֺǸå¤òÀÚ¤ê½Ð¤·
72    $FromFileName = array_shift(explode(".",$tmp)); # .¤Ç¶èÀÚ¤é¤ì¤¿Éôʬ¤òÀÚ¤ê½Ð¤·
73    $ToFile = $PreWord.$FromFileName; # ³ÈÄ¥»Ò°Ê³°¤ÎÉôʬ¤Þ¤Ç¤òºîÀ®
74   
75    $ImgNew = imagecreatetruecolor($re_size[0],$re_size[1]);
76   
77    switch($size[2]) {
78        case "1": //gif·Á¼°
79            if($tmp_w <= 1 && $tmp_h <= 1){
80                if ( $newFileName ) {
81                    $ToFile = $newFileName;
82                } elseif  ($ext) {
83                    $ToFile .= "." . $ext;
84                } else {
85                    $ToFile .= ".gif";
86                }
87                if(!@copy($FromImgPath , $ToImgPath.$ToFile)) { # ¥¨¥é¡¼½èÍý
88                    return array(0,"¥Õ¥¡¥¤¥ë¤Î¥³¥Ô¡¼¤Ë¼ºÇÔ¤·¤Þ¤·¤¿¡£");
89                }
90                ImageDestroy($ImgNew);
91                return array(1,$ToFile);
92            }
93                   
94            ImageColorAllocate($ImgNew,255,235,214); //ÇØ·Ê¿§
95            $black = ImageColorAllocate($ImgNew,0,0,0);
96            $red = ImageColorAllocate($ImgNew,255,0,0);
97            Imagestring($ImgNew,4,5,5,"GIF $size[0]x$size[1]", $red);
98            ImageRectangle ($ImgNew,0,0,($re_size[0]-1),($re_size[1]-1),    $black);
99           
100            if ( $newFileName ) {
101                $ToFile = $newFileName;
102            } elseif($ext) {
103                $ToFile .= "." . $ext;
104            } else {
105                $ToFile .= ".png";
106            }
107            $TmpPath = $ToImgPath.$ToFile;
108            @Imagepng($ImgNew,$TmpPath);
109            if(!@file_exists($TmpPath)){ # ²èÁü¤¬ºîÀ®¤µ¤ì¤Æ¤¤¤Ê¤¤¾ì¹ç
110                return array(0,"²èÁü¤Î½ÐÎϤ˼ºÇÔ¤·¤Þ¤·¤¿¡£");
111            }
112            ImageDestroy($ImgNew);
113            return array(1,$ToFile);
114           
115        case "2": //jpg·Á¼°
116            $ImgDefault = ImageCreateFromJpeg($FromImgPath);
117            //ImageCopyResized( $ImgNew,$ImgDefault, 0, 0, 0, 0,$re_size[0], $re_size[1],$size[0], $size[1]);
118           
119            if($re_size[0] != $size[0] || $re_size[0] != $size[0]) {
120                ImageCopyResampled( $ImgNew,$ImgDefault, 0, 0, 0, 0,$re_size[0], $re_size[1],$size[0], $size[1]);
121            }
122           
123            gfDebugLog($size);
124            gfDebugLog($re_size);
125                       
126           
127           
128            if ( $newFileName ) {
129                $ToFile = $newFileName;
130            } elseif($ext) {
131                $ToFile .= "." . $ext;
132            } else {
133                $ToFile .= ".jpg";
134            }
135            $TmpPath = $ToImgPath.$ToFile;
136            @ImageJpeg($ImgNew,$TmpPath);
137            if(!@file_exists($TmpPath)){ # ²èÁü¤¬ºîÀ®¤µ¤ì¤Æ¤¤¤Ê¤¤¾ì¹ç
138                return array(0,"²èÁü¤Î½ÐÎϤ˼ºÇÔ¤·¤Þ¤·¤¿¡£<br>${ImgNew}<br>${TmpPath}");
139            }
140            $RetVal = $ToFile;
141            break;
142           
143        case "3": //png·Á¼°
144            $ImgDefault = ImageCreateFromPNG($FromImgPath);
145            //ImageCopyResized($ImgNew, $ImgDefault, 0, 0, 0, 0,$re_size[0], $re_size[1],$size[0], $size[1]);
146            ImageCopyResampled($ImgNew, $ImgDefault, 0, 0, 0, 0,$re_size[0], $re_size[1],$size[0], $size[1]);
147           
148            if ( $newFileName ) {
149                $ToFile = $newFileName;
150            } elseif ($ext) {
151                $ToFile .= "." . $ext;
152            } else {
153                $ToFile .= ".png";
154            }
155            $TmpPath = $ToImgPath.$ToFile;
156            @ImagePNG($ImgNew,$TmpPath );
157            if(!@file_exists($TmpPath)){ # ²èÁü¤¬ºîÀ®¤µ¤ì¤Æ¤¤¤Ê¤¤¾ì¹ç
158                return array(0,"²èÁü¤Î½ÐÎϤ˼ºÇÔ¤·¤Þ¤·¤¿¡£");
159            }
160            $RetVal = $ToFile;
161            break;
162    }
163   
164    ImageDestroy($ImgDefault);
165    ImageDestroy($ImgNew);
166   
167    return array(1,$RetVal);
168}
169?>
Note: See TracBrowser for help on using the repository browser.