ホームページ >バックエンド開発 >PHPチュートリアル >PHP 画像スケーリング コード - 指定したサイズのサムネイルをスケーリングまたはインターセプトする非常に使いやすい Method_PHP チュートリアル。
/*************************************************** ******
* サイズ変更関数:
*
* = 最大幅に基づいてサイズ変更された画像を作成します
* を指定し、サムネイルを生成します
* 画像の中央から切り取った長方形です
*
* @dir = ディレクトリ画像が保存されます
* @newdir = 新しい画像が保存されるディレクトリ
* @img = 画像名
* @newimg = 画像の新しい名前
* @max_w = サイズ変更された画像の最大幅
* @max_h = サイズ変更された画像の最大高さ
* @th_x = x 座標の開始点
* @th_y = y 座標の開始点
* @th_w = サムネイルの幅
* @th_h = サムネイルの高さ
* @cut = 切り抜きが必要かどうか
* @center = 画像の中央から切り取るかどうか
*
************************************************* ********/
関数size($dir, $newdir, $img, $newimg, $max_w, $max_h, $th_x = '', $th_y = '', $th_w = '', $th_h = '',$cut = FALSE, $center = FALSE)
{
// 宛先ディレクトリを設定します
if (!$newdir) $newdir = $dir;
if (!$newimg) $newimg = $img;
// 元の画像の幅と高さを取得します
list($or_w, $or_h, $or_t) = getimagesize($dir.$img);
スイッチ($or_t){
// 元の画像
ケース 1:
$or_image = imagecreatefromgif($dir.$img);
壊す;
ケース 2:
$or_image = imagecreatefromjpeg($dir.$img);
壊す;
ケース 3:
$or_image = imagecreatefrompng($dir.$img);
壊す;
デフォルト:
'サポートされていない画像格式' を返します。 www.2cto.com
壊す;
}
// 画像が JPEG であることを確認してください
// if ($or_t == 2) {
// 画像の比率を取得します
// $ratio = ($or_h / $or_w);
$ratio = ($max_h / $max_w);
// 元の画像
// $or_image = imagecreatefromjpeg($dir.$img);
// 画像のサイズを変更しますか?
if ($or_w > $max_w || $or_h > $max_h) {
// 高さ、幅の順にサイズ変更します (高さが優先)
if ($max_h
$rs_h = $max_h;
$rs_w = $rs_h / $ratio;
}
// 幅、高さの順にサイズ変更します (幅優先)
それ以外の場合 {
$rs_w = $max_w;
$rs_h = $ratio * $rs_w;
}
// 古い画像を新しい画像にコピー
$rs_image = imagecreatetruecolor($rs_w, $rs_h);
imagecopyresampled($rs_image, $or_image, 0, 0, 0, 0, $rs_w, $rs_h, $or_w, $or_h);
}
// 画像のサイズ変更は必要ありません
それ以外の場合 {
$rs_w = $or_w;
$rs_h = $or_h;
$rs_image = $or_image;
}
// サイズ変更された画像を生成します
DrawImage($rs_image, $newdir.$newimg,$or_t,100);
//裁断生成指定の大小開始-------------------
if ($cut){
$th_image = imagecreatetruecolor($th_w, $th_h);
// サイズ変更した画像から長方形を切り取ってサムネイルに保存します
if ($center){
$new_w = (($rs_w / 2) - ($th_w / 2));
$new_h = (($rs_h / 2) - ($th_h / 2));
}else {
$new_w = $th_x;
$new_h = $th_y;
}
imagecopyresampled($th_image, $rs_image, 0, 0, $new_w, $new_h, $rs_w, $rs_h, $rs_w, $rs_h);
// サムネイルを生成します
DrawImage($th_image, $newdir.'th_'.$newimg,$or_t,100);
@ImageDestroy($th_image);
}
// 生成指定の大小終了-------------------
// true を返します。
//}
// 画像タイプが JPEG ではありませんでした!
/* 他 {
false を返します;
} */
@ImageDestroy($rs_image);
}
/**
* @リソース画像
* @ファイル名
* @quality
* @type
**/
関数 DrawImage($resource,$filename,$type,$quality){
スイッチ($type){
// 元の画像
ケース 1:
$or_image = imagegif($resource,$filename);
壊す;
ケース 2:
$or_image = imagejpeg($resource,$filename,$quality);
壊す;
ケース 3:
$or_image = imagepng($resource,$filename);
壊す;
}
}
抜粋 aa705123123 の专栏