PHP生成缩略图类共享PNG透明

PHP生成缩略图类共享PNG透明
注意:这个函数依赖于GD2的图形库

最近,您必须使用PHP生成缩略图,并在网上查找并找到这篇文章:PHP生成图片缩略图。

经过一番试验,我们发现有几个问题。

1,PNG图片生成的缩略图是JPG格式的。

2,PNG图片生成的缩略图没有透明(半透明)效果(填充黑色背景)。

三.代码语法比较旧。

因此,在这个版本的基础上对一个简单的修改进行了优化

缩略图类的PHP生成
< PHP
*
*属性调整图像(PNG,JPG,GIF)
*十年后作者的兄弟。
*日期:2014.11.13
* /
类resizeimage {
图片类型
私人$类型;
实际宽度
私人宽度;
/实际高度
私人身高;
更改宽度后/
私人resize_width美元;
在高度改变之后/
私人resize_height美元;
是否削减计划
私人削减;
/源图像
私人srcimg美元;
目标地址的映像
私人dstimg美元;
创建临时映像
私人即时通讯;

功能__construct(imgpath美元美元美元,宽度,高度,从而美元美元,保存路径){
美元-> srcimg = $ imgpath;
美元-> resize_width = $宽度;
美元-> resize_height = $高度;
美元->切= $被切断;
类型图片

美元->类型= strtolower(substr(strrchr(美元-> srcimg,,),1));

初始化图像
美元-> initi_img();
目标地址的映像
这dst_img美元($保存路径);

美元->宽度= imagesx(美元-> IM);
美元->高度= imagesy(美元-> IM);
生成图像
美元-> newimg();
销毁一图像(美元-> IM);
}

私有函数newimg(){
在比值/图像变化后
resize_ratio美元=(美元-> resize_width)/(美元-> resize_height);
实际图像的比例
$ =($ - >宽度)($ - >高度);
如果($ - >削减){
剪切/映射
newimg美元=新建一个真彩色图像(美元-> resize_width,美元-> resize_height);
如果($ = type =PNG ){
imagefill(newimg美元,0, 0,imagecolorallocatealpha(newimg美元,0, 0, 0,127));
}
如果(美元比> = $ resize_ratio){
高优先级
imagecopyresampled(newimg美元,美元->通讯,0, 0, 0,0,美元-> resize_width,美元-> resize_height,(美元->高度)* $ resize_ratio),美元->高度);
{人}
宽度优先
imagecopyresampled(newimg美元,美元->通讯,0, 0, 0,0,resize_width美元->,-> resize_height美元,美元->宽度(($这->宽度)/ $ resize_ratio));
}
{人}
不要剪切/映射
如果(美元比> = $ resize_ratio){
newimg美元=新建一个真彩色图像(美元-> resize_width,(($这-> resize_width) /价格比);
如果($ = type =PNG ){
imagefill(newimg美元,0, 0,imagecolorallocatealpha(newimg美元,0, 0, 0,127));
}
imagecopyresampled(newimg美元,美元->通讯,0, 0, 0,0,美元-> resize_width,(美元-> resize_width) /价格比,美元->美元->宽度、高度);
{人}
newimg美元=新建一个真彩色图像(($这-> resize_height)* $比美元-> resize_height);
如果($ = type =PNG ){
imagefill(newimg美元,0, 0,imagecolorallocatealpha(newimg美元,0, 0, 0,127));
}
imagecopyresampled(newimg美元,美元->通讯,0, 0, 0,0,(美元-> resize_height)* $比美元-> resize_height,美元->美元->宽度、高度);
}
}
如果($ = type =PNG ){
imagesavealpha(newimg美元,真的);
Imagepng ($newimg, $this->dstimg);
{人}
imagejpeg(newimg美元,美元-> dstimg);
}
}

初始化图像
私有函数initi_img(){
如果($ = type = ){
美元->我= imagecreatefromjpeg(美元-> srcimg);
}
如果($typegif){
美元->我= imagecreatefromgif(美元-> srcimg);
}
如果($ = type =PNG ){
美元->我= imagecreatefrompng(美元-> srcimg);
}
}

图像/目标地址
私有函数dst_img($ dstpath){
full_length美元= strlen(美元-> srcimg);

type_length美元= strlen(美元->型);
name_length美元美元美元type_length full_length =;
$name = substr(美元-> srcimg,0,name_length-1美元);
美元-> dstimg = $ dstpath;
}
}
>

使用

在使用时,可以直接调用类的构造函数,构造函数如下所示:

resizeimage美元=新resizeimage(imgpath美元美元美元,宽度,高度,从而美元美元,保存路径);

参数

imgpath美元:原始图片地址

宽度:缩略图的宽度。

高度:高缩略图

从而美元:是否切断,布尔值

为保存路径:缩略图的地址(可以作为原始图片地址相同)

样品
< PHP
包括resizeimage .php;
jpgresize美元=新resizeimage(IMG / test_1920_1200 .webp

PNG
pngresize美元=新resizeimage(IMG / test_1024_746 PNG 。

>

影响

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