php图像裁剪功能(保持图像不变形)
要求如下:源代码如下所示:
复制代码代码如下所示:
<
* exif_imagetype --确定图像的类型
*描述:函数函数是将图像切割成任意大小的图像,而图像不会变形。
*参数说明:输入需要处理图片的文件名,生成新图片的文件名,生成新图片的宽度,并生成新图片。
* /
获取任意大小的图像,缺少局部张力,不变形,不留空白。
功能my_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);
出口();
}
加载映像
开关($ type){
案例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; / /,比的小比例的切割宽度或放大在高度比标准高度方向
{ }人
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);
开关($ 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目标图像,边缘小于原来的,第一放大和削减和平的形象。
/ / =如果(($ 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);
开关($ 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(测试。gif,11111。gif,'100px ','100px);
>