ホームページ > バックエンド開発 > PHPチュートリアル > PHP画像切り抜き機能_PHPチュートリアル

PHP画像切り抜き機能_PHPチュートリアル

WBOY
リリース: 2016-07-13 10:30:36
オリジナル
862 人が閲覧しました

この記事は主に、画像を変更せずにPHP画像をトリミングする機能を紹介します。必要な友達はそれを参照してください

画像をアップロードした後、自動的にトリミングされ、トリミングされた画像がフロントデスクに表示されるため。

要件は上記の通り、ソースコードは次のとおりです:

コードは次のとおりです:

*exif_imagetype -- 画像のタイプを決定します

*説明: 画像を変形させずに任意のサイズの画像にトリミングする機能です

* パラメータの説明: 処理する画像のファイル名を入力し、新しい画像の保存ファイル名を生成し、新しい画像の幅を生成し、新しい画像の高さを生成します

*/

// 任意のサイズの画像を取得し、欠けている部分を変形したり空白を残さずに引き伸ばします

関数 my_image_resize($src_file, $dst_file , $new_width , $new_height) {

$new_width= intval($new_width);

$new_height=intval($new_width);

if($new_width

echo "パラメータの幅または高さのエラー!";

終了();

}

if(!file_exists($src_file)) {

echo $src_file . "は存在しません!";

終了();

}

//画像タイプ

$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 のみをサポートします";

終了();

}

//画像をロード

スイッチ($type) {

ケース IMAGETYPE_JPEG :

$src_img=imagecreatefromjpeg($src_file);

休憩;

ケース IMAGETYPE_PNG :

$src_img=imagecreatefrompng($src_file);

休憩;

ケース IMAGETYPE_GIF :

$src_img=imagecreatefromgif($src_file);

休憩;

デフォルト:

echo "画像の読み込みエラー!";

終了();

}

$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_h) {

$ratio = $ratio_h; // ケース 1、幅の比率が高さ方向より小さい場合、高さの比率の基準に従ってトリミングまたは拡大します

}その他{

$ratio = $ratio_w ;

}

// アスペクト比がターゲット要件を正確に満たす中間一時画像を定義します

$inter_w=(int)($new_width / $ratio);

$inter_h=(int) ($new_height / $ratio);

$inter_img=imagecreatetruecolor($inter_w , $inter_h);

//var_dump($inter_img);

imagecopy($inter_img, $src_img, 0,0,0,0,$inter_w,$inter_h);

// ターゲット画像のサイズとして最大辺の長さをもつ一時画像を生成 $ratio

//新しい画像を定義します

$new_img=imagecreatetruecolor($new_width,$new_height);

//var_dump($new_img);exit();

imagecopyresampled($new_img,$inter_img,0,0,0,0,$new_width,$new_height,$inter_w,$inter_h);

スイッチ($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);

スイッチ($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

}//関数を終了します

my_image_resize('test.gif','11111.gif','100px','100px');

?>

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/764904.html技術記事この記事では主に、画像を変更せずに PHP の画像トリミング機能を紹介します。必要な友人は、アップロード後に画像の自動トリミングを完了し、最前面に表示するためにそれを参照できます。
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート