source: branches/feature-module-update/data/lib/thumb.php @ 15532

Revision 15532, 4.9 KB checked in by nanasess, 17 years ago (diff)

svn:mime-type 修正

  • Property svn:keywords set to Id
  • Property svn:mime-type set to text/x-httpd-php; charset=UTF-8
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.