php裁剪和缩放示例(无损裁剪)

php裁剪和缩放示例(无损裁剪)
本文介绍了PHP图片裁剪和缩放的例子,废话不多,具体代码如下:

*

* exif_imagetype --确定图像的类型

*功能描述:功能是将图像切割成任意大小的图像,使图像不变形。

*参数说明:输入需要处理图片的文件名,生成新图片的文件名,生成新图片的宽度,并生成新图片。

* /
获取任意大小的图像,缺少局部张力,不变形,不留空白。

功能image_resize(src_file美元,dst_file美元美元美元,new_width,new_height)

{

new_width = intval美元(美元new_width);
new_height = intval美元(美元new_width);
如果($ new_width<1美元| | new_height<1)

{

回声params宽度或高度误差!;

出口();

}
如果(!file_exists($ src_file))

{

echo $ src_file。不存在!;

出口();

}
图像类型

类型= exif_imagetype美元(美元src_file);
support_type美元=阵列(imagetype_jpeg,imagetype_png,imagetype_gif);
如果(!in_array(合式,support_type美元,真的))

{
这种类型的图像不支持!只支持JPG,GIF);

出口();

}
加载映像
开关($类型)

{

案例imagetype_jpeg:
src_img = imagecreatefromjpeg美元(美元src_file);
打破;
案例imagetype_png:
src_img = imagecreatefrompng美元(美元src_file);
打破;
案例imagetype_gif:
src_img = imagecreatefromgif美元(美元src_file);
打破;
违约:

加载图像错误!;
出口();

}
W = imagesx美元(美元src_img);
$h = imagesy ($src_img);
ratio_w美元= 1 * $ new_width / $ W;
ratio_h美元= 1 * new_height美元/美元小时;
美元= 1;
生成的图像宽度比原始图像小,或者两者都是大比例放大的原理,大比例(缩小的比例相对较小)。
如果((ratio_w美元1美元ratio_h > 1))

{
如果($ ratio_w << ratio_h美元){
ratio_h美元美元比率=;
A/高度方向,比小宽比高,按比例缩小或放大
{人}
ratio_w美元美元比率=;
}
临时映像定义了图像的中间长宽比,只满足目标需求。
inter_w美元=(int)($ new_width /价格比);
inter_h美元=(int)($ new_height /价格比);
inter_img美元=新建一个真彩色图像(inter_w美元,美元inter_h);
/ / var_dump($ inter_img);
imagecopy(inter_img美元,src_img美元,0, 0, 0,0,inter_w美元,美元inter_h);
对临时对象图像的大小生成一个最大的边缘长度是$比。

定义新图像
new_img美元=新建一个真彩色图像(new_width美元,美元new_height);
/ / var_dump($ new_img);出口();

imagecopyresampled(new_img美元,inter_img美元,0, 0, 0,0,new_width美元,new_height美元美元美元,inter_w,inter_h);
开关($类型)

{

案例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目标图像,边缘小于原来的,第一放大和削减和平的形象。
/ / =如果(($ ratio_w 1)| |($ ratio_w > 1美元ratio_h<1))
{其他
美元美元的比率= ratio_h > ratio_w ratio_h:ratio_w美元美元美元;
取一大部分的值
高清晰度图像的中间,图像和目标图像的等高度或宽度,然后放大原始图像。
inter_w美元=(int)($ W * $比);
inter_h美元=(int)($ H * $比);
inter_img美元=新建一个真彩色图像(inter_w美元,美元inter_h);
原来的缩放比例削减
imagecopyresampled(inter_img美元,src_img美元,0, 0, 0,0,inter_w美元,inter_h美元美元美元,W,H);
定义新图像
new_img美元=新建一个真彩色图像(new_width美元,美元new_height);
imagecopy(new_img美元,inter_img美元,0, 0, 0,0,new_width美元,美元new_height);
开关($类型)

{

案例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
结束函数

输出新图像

image_resize(测试。JPG,'demo .webp,'1200px ','1200px);
以上是本文的全部内容,希望能对您有所帮助,希望大家多多支持。
免责声明:本网信息来自于互联网,目的在于传递更多信息,并不代表本网赞同其观点。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,并请自行核实相关内容。本站不承担此类作品侵权行为的直接责任及连带责任。如若本网有任何内容侵犯您的权益,请及时联系我们,本站将会在24小时内处理完毕。
相关文章
返回顶部