- /**
- * $inputFileName から高さや幅が以下のサムネイル画像を作成します
- * $maxSize。新しい画像リソースを返すか、エラーの場合は false を返します。
- * 著者: mthorn.net
- */
- 関数thumbnail($inputFileName, $maxSize = 100)
- {
- $info = getimagesize($inputFileName);
-
- $type = isset($info['type'] )? $info['type'] : $info[2];
-
- // ファイルタイプのサポートをチェック
- if ( !(imagetypes() & $type) )
- {
- // サーバーはファイルタイプをサポートしていません
- return false ;
- }
-
- $width = isset($info['width']) ? $info['width'] : $info[0];
- $height = isset($info['height']) ? $info['height'] : $info[1];
-
- // アスペクト比を計算します
- $wRatio = $maxSize / $width;
- $hRatio = $maxSize / $height;
-
- // imagecreatefromstring を使用すると自動的に検出されますファイルの種類
- $sourceImage = imagecreatefromstring(file_get_contents($inputFileName));
-
- // 最大サイズ以下の比例した幅と高さを計算します。
- if ( ($width <= $maxSize) && ($height
- {
- // 入力はサムネイルより小さいので、何もしません
- return $sourceImage;
- }
- elseif ( ($wRatio * $height) < $maxSize )
- {
- // 画像は水平です
- $tHeight = ceil($wRatio * $height);
- $tWidth = $maxSize;
- }
- else
- {
- // 画像は垂直です
- $tWidth = ceil($hRatio * $width);
- $tHeight = $maxSize ;
- }
-
- $thumb = imagecreatetruecolor($tWidth, $tHeight);
-
- if ( $sourceImage === false )
- {
- // 画像を読み込めませんでした
- return false;
- }
-
- // リサンプリングされたメイクをコピーします滑らかなサムネイル
- imagecopyresampled($thumb, $sourceImage, 0, 0, 0, 0, $tWidth, $tHeight, $width, $height);
- imagedestroy($sourceImage);
-
- return $thumb;
- }
-
- /**
- * 画像をファイルに保存します。タイプは拡張子から決まります
- * $qualityはjpegのみに使用されます
- * 著者: mthorn.net
- */
- function imageToFile($im, $fileName, $quality = 80)
- {
- if ( !$im || file_exists($fileName) )
- {
- return false;
- }
-
- $ext = strto lower(substr($fileName, strrpos($fileName, '.')));
-
- switch ( $ext )
- {
- case ' .gif':
- imagegif($im, $fileName);
- ブレーク;
- ケース '.jpg':
- ケース '.jpeg':
- imagejpeg($im, $fileName, $quality);
- ブレーク;
- ケース ' .png':
- imagepng($im, $fileName);
- ブレーク;
- case '.bmp':
- imagewbmp($im, $fileName);
- ブレーク;
- デフォルト:
- return false;
- }
-
- return true ;
- }
-
- $im =thumbnail('temp.jpg', 100);
- imageToFile($im, 'temp-thumbnail.jpg');
复制代
|