検索
ホームページphp教程php手册PHPで変形せずにサムネイルをトリミングする方法

画像を変形させずに任意のサイズの画像に切り出す機能です。処理対象の画像のファイル名を入力し、新しい画像の保存ファイル名を生成し、画像を生成します。新しい画像の幅、画像の高さ...

bcastr を使用したことがある方は、bcastr によって、固定サイズの出力画像フレームの場合、ソース画像が次のような状況になることが保証されることを知っているはずです。

1: 出力される画像の高さと幅が元の画像の高さと幅より小さい場合、判定として記述されます $new_width 2: 出力する画像の高さと幅が元の画像の高さと幅よりも大きい場合、判定として記述 $new_width>$src_width && $new_height>$src_width

3: 1 番目と 2 番目のタイプ、つまりズームアウト中にズームインする場合を除外し、さらに等しいと判断する

1と2は関数の処理コードが全く同じなので1つの処理文にまとめることができます

PHP 実装コードを指定します

/*
*説明: 画像を変形せずに任意のサイズの画像にトリミングする機能です
※パラメータ説明:処理対象の画像のファイル名、生成される新規画像の保存ファイル名、生成される新規画像の幅、生成される新規画像の高さを入力
* 執筆者: smallchicken
* 時刻 2008-12-18
*/
// 任意のサイズの画像を取得し、欠けている部分を引き伸ばします。変形や空白はありません
function my_image_resize($src_file, $dst_file , $new_width , $new_height) {
if($new_width echo "パラメータの幅または高さのエラー!";
exit();
}
if(!file_exists($src_file)) {
echo $src_file . " は存在しません !";
exit();
}
//画像タイプ
$type=exif_imagetype($src_file);
$support_type=array(IMAGETYPE_JPEG , IMAGETYPE_PNG , IMAGETYPE_GIF);
if(!in_array($type, $support_type,true)) {
echo "このタイプの画像はサポートされていません! jpg、gif、または png のみをサポートします";
exit();
}
//画像をロード
switch($type) {
ケース IMAGETYPE_JPEG :
$src_img=imagecreatefromjpeg($src_file);
休憩;
ケース IMAGETYPE_PNG :
$src_img=imagecreatefrompng($src_file);
休憩;
ケース IMAGETYPE_GIF :
$src_img=imagecreatefromgif($src_file);
休憩;
デフォルト:
echo "画像の読み込みエラー!";
exit();
}
$w=imagesx($src_img);
$h=imagesy($src_img);
$ratio_w=1.0 * $new_width / $w;
$ratio_h=1.0 * $new_height / $h;
$ratio=1.0;
// 生成される画像の高さ、幅は元の画像より小さい、または大きい場合は、拡大率を大きく、縮小率を大きくするのが原則です(縮小率は小さくなります)
if( ($ratio_w 1 && $ratio_h > 1)) {
if($ratio_w $ratio = $ratio_h ; // ケース 1、幅の比率が高さ方向より小さい場合、高さの比率の基準に従ってトリミングまたは拡大します
}else {
$ratio = $ratio_w ;
}
// アスペクト比がターゲット要件を正確に満たす中間一時画像を定義します
$inter_w=(int)($new_width / $ratio);
$inter_h=(int) ($new_height / $ratio);
$inter_img=imagecreatetruecolor($inter_w , $inter_h);
imagecopy($inter_img, $src_img, 0,0,0,0,$inter_w,$inter_h);
// 最大辺の長さをターゲット画像として一時画像を生成 $ratio 比率
//新しい画像を定義します
$new_img=imagecreatetruecolor($new_width,$new_height);
imagecopyresampled($new_img,$inter_img,0,0,0,0,$new_width,$new_height,$inter_w,$inter_h);
switch($type) {
ケース IMAGETYPE_JPEG :
imagejpeg($new_img, $dst_file,100) // 画像を保存します
休憩;
ケース IMAGETYPE_PNG :
imagepng($new_img,$dst_file,100);
休憩;
ケース IMAGETYPE_GIF :
imagegif($new_img,$dst_file,100);
休憩;
デフォルト:
休憩;
}
} // 1
の場合は終了 // 2 対象画像の片側が元の画像より大きく、片側が元の画像より小さい まず通常の画像を拡大してからトリミングします
// =if( ($ratio_w 1) ($ratio_w >1 && $ratio_h それ以外{
$ratio=$ratio_h>$ratio_w? $ratio_h : $ratio_w // 大きい方の値を取得します
// 中央に大きな画像を定義し、画像の高さまたは幅はターゲット画像と同じにして、元の画像を拡大します
$inter_w=(int)($w * $ratio);
$inter_h=(int) ($h * $ratio);
$inter_img=imagecreatetruecolor($inter_w , $inter_h);
//拡大縮小後に元の画像をトリミング
imagecopyresampled($inter_img,$src_img,0,0,0,0,$inter_w,$inter_h,$w,$h);
//新しい画像を定義します
$new_img=imagecreatetruecolor($new_width,$new_height);
imagecopy($new_img, $inter_img, 0,0,0,0,$new_width,$new_height);
switch($type) {
ケース IMAGETYPE_JPEG :
imagejpeg($new_img, $dst_file,100) // 画像を保存します
休憩;
ケース IMAGETYPE_PNG :
imagepng($new_img,$dst_file,100);
休憩;
ケース IMAGETYPE_GIF :
imagegif($new_img,$dst_file,100);
休憩;
デフォルト:
休憩;
}
}// if3
}//関数を終了
?>



声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

AtomエディタMac版ダウンロード

AtomエディタMac版ダウンロード

最も人気のあるオープンソースエディター

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

強力な PHP 統合開発環境

EditPlus 中国語クラック版

EditPlus 中国語クラック版

サイズが小さく、構文の強調表示、コード プロンプト機能はサポートされていません