検索
ホームページ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 までご連絡ください。
img文件怎么打开img文件怎么打开Sep 18, 2023 am 09:40 AM

打开img文件的方法有使用虚拟光驱软件打开、使用压缩软件打开和使用专用工具打开。详细介绍:1、使用虚拟光驱软件打开,下载并安装一个虚拟光驱软件,右键单击img文件,选择“打开方式”或“关联程序”,在弹出的对话框中选择安装的虚拟光驱软件,虚拟光驱软件会自动加载img文件,并将其作为虚拟光驱中的光盘映像,双击虚拟光驱中的光盘图标,即可打开img文件并访问其中的内容等等。

img文件如何打开img文件如何打开Jul 06, 2023 pm 04:17 PM

img文件打开的方式:1、确认img文件路径;2、使用img文件打开器;3、选择打开方式;4、查看图片;5、保存图片。img文件是一种常用的图像文件格式,通常用于存储图片数据。

img是什么格式img是什么格式Mar 17, 2023 am 10:33 AM

img是一种文件压缩格式,主要是为了创建软盘的镜像文件,它可以用来压缩整个软盘或整片光盘的内容;使用“.IMG”这个扩展名的文件就是利用这种文件格式来创建的;img文件包括3个基本节点,分别是“Ehfa_HeaderTag”、“Ehfa_File”和“Ehfa_Entry”。

u盘pe读不出imgu盘pe读不出imgMar 19, 2024 pm 12:07 PM

U盘是经常用到的储存设备之一,那在使用过程中也会出现一些小问题,比如:U盘读不出,那该怎么解决呢?收好!u盘读不出来?4步教你轻松解决在U盘已经插到电脑的基础上点击开始菜单,选中控制面板收好!u盘读不出来?4步教你轻松解决在控制面板里找到并双击设备管理器。收好!u盘读不出来?4步教你轻松解决在设备管理器的主界面找到通用串行总线控制器收好!u盘读不出来?4步教你轻松解决找到usb大容量存储设备,选中它点击右键找到卸载收好!u盘读不出来?4步教你轻松解决欢迎留言讨论哟!

在html中图像标签是什么意思在html中图像标签是什么意思Mar 04, 2021 pm 02:37 PM

在html中,图像标签是指用于定义图像的标签,即“<img>”标签。img元素可以向网页中嵌入一幅图像,“<img>”标签的作用是为被引用的图像创建占位符,将图像链接到HTML页面上;img标签使用src属性来规定显示图像的URL,语法“<img src="图像url">”。

java中的new关键字怎么使用java中的new关键字怎么使用May 03, 2023 pm 10:16 PM

1.概念在Java语言里,“new”表达式是负责创建实例的,其中会调用构造器去对实例做初始化;构造器自身的返回值类型是void,并不是“构造器返回了新创建的对象的引用”,而是new表达式的值是新创建的对象的引用。2.用途新建类的对象3.工作机制为对象成员分配内存空间,并指定默认值对成员变量进行显式初始化执行构造方法计算并返回引用值4.实例new操作往往意味着内存中的开辟新的内存空间,这个内存空间分配在内存中的堆区,受到jvm控制,自动进行内存管理。这里我们就是用String这个类来举例说明。pu

jquery怎么改变img的src属性jquery怎么改变img的src属性Mar 03, 2022 pm 03:41 PM

jquery改变img src属性的方法:1、使用attr()属性,语法“$("img").attr("src","图片文件的地址")”;2、使用prop()方法,语法“$("img").prop("src","图片文件的地址")”。

See all articles

ホット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 統合開発環境

SublimeText3 中国語版

SublimeText3 中国語版

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

SublimeText3 Linux 新バージョン

SublimeText3 Linux 新バージョン

SublimeText3 Linux 最新バージョン

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール