ホームページ >バックエンド開発 >PHPチュートリアル >PHP ズーム画像
Web サイトのフロントエンドにアップロードされた画像の場合、バックグラウンド処理中に画像を拡大縮小して、均一なサイズのサムネイルを生成する必要があります。 PHP では、GD ライブラリを使用してこのタスクを簡単に実行できます。以下の CImage クラスの静的メソッド CreateThumbnail() 関数は、元の画像ファイル名、サムネイルの幅と高さ、生成されたサムネイル ファイル名、およびその他のパラメータを受け入れて、元の画像のアスペクト比を維持するサムネイルを生成できます。基本的にはPHPでサムネイルを生成する方法を実現した機能であり、サムネイルファイルの名前から指定した形式のサムネイルを生成するなど、さらに機能を拡張することができます。
完全なコードは次のとおりです (Win7+XAMPP2.5 および Linuxdev 2.6.18-128+apache はテストに合格しました):
[php] view plain copy
//by MoreWindows (http://blog.csdn.net/MoreWindows) class CImage { /*** 元の画像の縦横比を維持したサムネイルを生成し、.png .jpg .gif をサポート * サムネイルの種類は .png 形式に統一 * $srcFile 元の画像ファイル名 * $toW サムネイルの幅 * $toH サムネイルの高さ * $toFile 縮小サムネイル ファイル名、元の画像ファイルを上書きする場合は空 * @return bool*/ public static function CreateThumbnail($srcFile, $toW, $toH, $toFile="") { if ($toFile == "") { $toFile = $srcFile; $info = "" //幅 0、高さ 1、画像タイプ 2、幅 3 および高さの 4 単位の配列を返します。説明。 // falseを返し、障害時に警告を生成します。 $data = getimagesize($srcFile, $info); if (!$data) falseを返します。 // 将文件资源变量im中 switch ($data[2]) //1-GIF、2-JPG、3-PNG { case 1: if(!function_exists("imagecreatefromgif")) { エコー」 GD は .gif をサポートできません。.jpeg または .png を使用してください。 back"; 出口(); } $im = imagecreatefromgif($srcFile); 壊す; case 2: if(!function_exists("imagecreatefromjpeg")) { echo 「GD は .jpeg をサポートできません。他の画像を使用してください。"; 出口(); } $im = imagecreatefromjpeg($srcFile); 壊す; ケース 3: $im = imagecreatefrompng($srcFile); 壊す; } //计算缩略图的宽高 $srcW = imagesx($im); $srcH = imagesy($im); $toWH = $toW / $toH; $srcWH = $srcW / $srcH; if ($toWH <= $srcWH) { $ftoW = $toW; $ftoH = (int)($ftoW * ($srcH / $srcW)); } else { $ftoH = $toH; $ftoW = (int)($ftoH * ($srcW / $srcH)); }if (function_exists("imagecreatetruecolor")) { $ni = imagecreatetruecolor($ftoW, $ftoH) //トゥルーカラー画像を作成します if ($ni) { // 画像のコピー部分をリサンプルし、鮮明さを維持するためにサイズ変更します。 Imagecopyresampled($ni, $im, 0, 0, 0, 0, $ftoW, $ftoH, $srcW, $srcH); { // 画像の一部をコピーしてサイズ変更します$ftoH); $ni = imagecreate($ftoW) , $ftoH); ($ ni, $ im, 0, 0, 0, 0, 0, $ ftow, $ ftoh, $ srcw, $ srch);} // .png 形式に統一したファイルに保存 imagepng ( $ ni, $ tofile); // 画像を PNG 形式で出力します ImageDestroy($im); http://blog.csdn.net /morewindows/article/詳細/7062506