PHP で画像を固定サイズにトリミングする_PHP チュートリアル
做一个首页调用图像,有时候往往需要获得固定大小的图像,因为首页的图像位置通常由设计人员指定好了,如果是做最新发布图像调用,因为不知道客户会上传什么比例的图像,所以,有时候也就没有办法确定图像的比例,前台页面编写人员通常会采用固定 img 元素高宽的办法来达到控制图像不溢出,但如果图像的比例不是需要的比例,就会造成图像调用后变形,很大程度上影响了页面的美观,有解决的方法是,按照原图比例进行缩放,缩放后的图像难免会有空白,空白处填以颜色,这样虽然图像不变形了,但这样会有很多问题,比如,如果用户发一个图像很高但宽度一般的图像,如果压缩成一个1:1的图像,那么压缩后基本就会看不到图像了。 给出php实现代码 /*
我这里的解决办法是,任意图像裁剪成固定大小,图像不变形,空白处拉伸填充,图像始终铺满,不留空白,用过bcastr的朋友应该知道,bcastr就是保证了图像调用的不变形,对一个固定大小输出的图像框,源图有以下几种情况:
1:需要输出的图像的高宽比源图的高宽都小,写成判断 $new_width<$src_width && $new_height<$src_width
2:需要输出的图像的高宽比原图的高宽都大,写成判断 $new_width>$src_width && $new_height>$src_width
3:排除第1,2两种,即一边放大,一边缩小的情况加上等于的判断
对于1,2,函数处理代码完全相同,所以可以归纳成一个处理语句
*説明: 画像を変形させずに任意のサイズの画像にトリミングする機能です
* パラメータの説明: 処理する画像のファイル名を入力し、保存ファイル名を生成します新しい画像の幅、生成された新しい画像の高さ
* 作成者 smallchicken
* 時刻 2008-12-18
*/
// 任意のサイズの画像を取得し、不足している画像を引き伸ばしますパーツ、変形なし、空白なし
function my_image_resize ($src_file, $dst_file , $new_width , $new_height) {
if($new_width <1 || $new_height <1) {
echo "params width または height error エラー!";
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) {
case IMAGETYPE_JPEG :
$src_img=imagecreatefromjpeg($src_file);
break;
case IMAGETYPE_PNG :
$src_img=imagecreatefrompng( $src_file);
break;
case IMAGETYPE_GIF :
$src_img=imagecreatefromgif($src_file);
break;
default:
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
if($ratio_w < $ratio_h) {
$ratio = $ratio_h ;高さ方向、高さの比率標準に従ってトリミングまたは拡大します
}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) {
case IMAGETYPE_JPEG :
imagejpeg($new_img, $dst_file) ,100); // 画像を保存
break;
case IMAGETYPE_PNG :
imagepng($new_img,$dst_file,100);
break;
case IMAGETYPE_GIF :
imagegif($new_img,$dst_file,100);
break;
default:
break;
}
} // end if 1
// 2 対象画像の片側が元の画像より大きく、片側が元の画像より小さい まず通常の画像を拡大してからトリミングします。それ
// =if( ($ratio_w < 1 && $ratio_h > 1) || ($ rate_w >1 && $ratio_h <1) )
else{
$ratio=$ratio_h>$ratio_w? rate_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) {
case IMAGETYPE_JPEG :
imagejpeg($new_img, $dst_file,100); // 保存画像
break;
case IMAGETYPE_PNG :
imagepng($new_img,$dst_file,100);
break;
case IMAGETYPE_GIF :
imagegif($ new_img,$dst_file,100);
break;
default:
break;
}
}// if3
}// 関数を終了します
?>

ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

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

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









PHP 8.4 では、いくつかの新機能、セキュリティの改善、パフォーマンスの改善が行われ、かなりの量の機能の非推奨と削除が行われています。 このガイドでは、Ubuntu、Debian、またはその派生版に PHP 8.4 をインストールする方法、または PHP 8.4 にアップグレードする方法について説明します。

Visual Studio Code (VS Code とも呼ばれる) は、すべての主要なオペレーティング システムで利用できる無料のソース コード エディター (統合開発環境 (IDE)) です。 多くのプログラミング言語の拡張機能の大規模なコレクションを備えた VS Code は、

あなたが経験豊富な PHP 開発者であれば、すでにそこにいて、すでにそれを行っていると感じているかもしれません。あなたは、運用を達成するために、かなりの数のアプリケーションを開発し、数百万行のコードをデバッグし、大量のスクリプトを微調整してきました。

このチュートリアルでは、PHPを使用してXMLドキュメントを効率的に処理する方法を示しています。 XML(拡張可能なマークアップ言語)は、人間の読みやすさとマシン解析の両方に合わせて設計された多用途のテキストベースのマークアップ言語です。一般的にデータストレージに使用されます

JWTは、JSONに基づくオープン標準であり、主にアイデンティティ認証と情報交換のために、当事者間で情報を安全に送信するために使用されます。 1。JWTは、ヘッダー、ペイロード、署名の3つの部分で構成されています。 2。JWTの実用的な原則には、JWTの生成、JWTの検証、ペイロードの解析という3つのステップが含まれます。 3. PHPでの認証にJWTを使用する場合、JWTを生成および検証でき、ユーザーの役割と許可情報を高度な使用に含めることができます。 4.一般的なエラーには、署名検証障害、トークンの有効期限、およびペイロードが大きくなります。デバッグスキルには、デバッグツールの使用とロギングが含まれます。 5.パフォーマンスの最適化とベストプラクティスには、適切な署名アルゴリズムの使用、有効期間を合理的に設定することが含まれます。

文字列は、文字、数字、シンボルを含む一連の文字です。このチュートリアルでは、さまざまな方法を使用してPHPの特定の文字列内の母音の数を計算する方法を学びます。英語の母音は、a、e、i、o、u、そしてそれらは大文字または小文字である可能性があります。 母音とは何ですか? 母音は、特定の発音を表すアルファベットのある文字です。大文字と小文字など、英語には5つの母音があります。 a、e、i、o、u 例1 入力:string = "tutorialspoint" 出力:6 説明する 文字列「TutorialSpoint」の母音は、u、o、i、a、o、iです。合計で6元があります

静的結合(静的::) PHPで後期静的結合(LSB)を実装し、クラスを定義するのではなく、静的コンテキストで呼び出しクラスを参照できるようにします。 1)解析プロセスは実行時に実行されます。2)継承関係のコールクラスを検索します。3)パフォーマンスオーバーヘッドをもたらす可能性があります。

PHPの魔法の方法は何ですか? PHPの魔法の方法には次のものが含まれます。1。\ _ \ _コンストラクト、オブジェクトの初期化に使用されます。 2。\ _ \ _リソースのクリーンアップに使用される破壊。 3。\ _ \ _呼び出し、存在しないメソッド呼び出しを処理します。 4。\ _ \ _ get、dynamic属性アクセスを実装します。 5。\ _ \ _セット、動的属性設定を実装します。これらの方法は、特定の状況で自動的に呼び出され、コードの柔軟性と効率を向上させます。
