php生成图片缩略图,支持png透明

前端之家收集整理的这篇文章主要介绍了php生成图片缩略图,支持png透明前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

功能依赖GD2图形库

PHP生成缩略图,在网上找了一下,发现了这篇文章PHP生成图片缩略图

试用了一下后,发现有这样几个问题:

1、png图片生成缩略图是jpg格式的

2、png图片生成缩略图没有了透明(半透明)效果(填充了黑色背景)

3、代码语法比较老

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

PHP生成缩略图

PHP 图片类型 </span><span style="color: #0000ff;"&gt;function</span> __construct(<span style="color: #800080;"&gt;$imgPath</span>,<span style="color: #800080;"&gt;$width</span>,<span style="color: #800080;"&gt;$height</span>,<span style="color: #800080;"&gt;$isCut</span>,<span style="color: #800080;"&gt;$savePath</span><span style="color: #000000;"&gt;) { </span><span style="color: #800080;"&gt;$this</span>->srcimg = <span style="color: #800080;"&gt;$imgPath</span><span style="color: #000000;"&gt;; </span><span style="color: #800080;"&gt;$this</span>->resize_width = <span style="color: #800080;"&gt;$width</span><span style="color: #000000;"&gt;; </span><span style="color: #800080;"&gt;$this</span>->resize_height = <span style="color: #800080;"&gt;$height</span><span style="color: #000000;"&gt;; </span><span style="color: #800080;"&gt;$this</span>->cut = <span style="color: #800080;"&gt;$isCut</span><span style="color: #000000;"&gt;; </span><span style="color: #008000;"&gt;//</span><span style="color: #008000;"&gt;<a href="/tag/tupian/" target="_blank" class="keywords">图片</a>的类型</span> <span style="color: #800080;"&gt;$this</span>->type = <span style="color: #008080;"&gt;strtolower</span>(<span style="color: #008080;"&gt;substr</span>(<span style="color: #008080;"&gt;strrchr</span>(<span style="color: #800080;"&gt;$this</span>->srcimg,"."),1<span style="color: #000000;"&gt;)); </span><span style="color: #008000;"&gt;//</span><span style="color: #008000;"&gt;初始化图象</span> <span style="color: #800080;"&gt;$this</span>-><span style="color: #000000;"&gt;initi_img(); </span><span style="color: #008000;"&gt;//</span><span style="color: #008000;"&gt;目标图象地址</span> <span style="color: #800080;"&gt;$this</span> -> dst_img(<span style="color: #800080;"&gt;$savePath</span><span style="color: #000000;"&gt;); </span><span style="color: #008000;"&gt;//</span><span style="color: #008000;"&gt;--</span> <span style="color: #800080;"&gt;$this</span>->width = imagesx(<span style="color: #800080;"&gt;$this</span>-><span style="color: #000000;"&gt;im); </span><span style="color: #800080;"&gt;$this</span>->height = imagesy(<span style="color: #800080;"&gt;$this</span>-><span style="color: #000000;"&gt;im); </span><span style="color: #008000;"&gt;//</span><span style="color: #008000;"&gt;<a href="/tag/shengcheng/" target="_blank" class="keywords">生成</a>图象</span> <span style="color: #800080;"&gt;$this</span>-><span style="color: #000000;"&gt;newimg(); ImageDestroy (</span><span style="color: #800080;"&gt;$this</span>-><span style="color: #000000;"&gt;im); } </span><span style="color: #0000ff;"&gt;private</span> <span style="color: #0000ff;"&gt;function</span><span style="color: #000000;"&gt; newimg() { </span><span style="color: #008000;"&gt;//</span><span style="color: #008000;"&gt;改变后的图象的比例</span> <span style="color: #800080;"&gt;$resize_ratio</span> = (<span style="color: #800080;"&gt;$this</span>->resize_width)/(<span style="color: #800080;"&gt;$this</span>-><span style="color: #000000;"&gt;resize_height); </span><span style="color: #008000;"&gt;//</span><span style="color: #008000;"&gt;实际图象的比例</span> <span style="color: #800080;"&gt;$ratio</span> = (<span style="color: #800080;"&gt;$this</span>->width)/(<span style="color: #800080;"&gt;$this</span>-><span style="color: #000000;"&gt;height); </span><span style="color: #0000ff;"&gt;if</span>(<span style="color: #800080;"&gt;$this</span>-><span style="color: #000000;"&gt;cut) { </span><span style="color: #008000;"&gt;//</span><span style="color: #008000;"&gt;裁图</span> <span style="color: #800080;"&gt;$newimg</span> = imagecreatetruecolor(<span style="color: #800080;"&gt;$this</span>->resize_width,<span style="color: #800080;"&gt;$this</span>-><span style="color: #000000;"&gt;resize_height); </span><span style="color: #0000ff;"&gt;if</span>(<span style="color: #800080;"&gt;$this</span>->type=="png"<span style="color: #000000;"&gt;) { imagefill(</span><span style="color: #800080;"&gt;$newimg</span>,imagecolorallocatealpha(<span style="color: #800080;"&gt;$newimg</span>,127<span style="color: #000000;"&gt;)); } </span><span style="color: #0000ff;"&gt;if</span>(<span style="color: #800080;"&gt;$ratio</span>>=<span style="color: #800080;"&gt;$resize_ratio</span><span style="color: #000000;"&gt;) { </span><span style="color: #008000;"&gt;//</span><span style="color: #008000;"&gt;高度优先</span> imagecopyresampled(<span style="color: #800080;"&gt;$newimg</span>,<span style="color: #800080;"&gt;$this</span>->im,<span style="color: #800080;"&gt;$this</span>->resize_width,<span style="color: #800080;"&gt;$this</span>->resize_height,((<span style="color: #800080;"&gt;$this</span>->height)*<span style="color: #800080;"&gt;$resize_ratio</span>),<span style="color: #800080;"&gt;$this</span>-><span style="color: #000000;"&gt;height); } </span><span style="color: #0000ff;"&gt;else</span><span style="color: #000000;"&gt; { </span><span style="color: #008000;"&gt;//</span><span style="color: #008000;"&gt;宽度优先</span> imagecopyresampled(<span style="color: #800080;"&gt;$newimg</span>,<span style="color: #800080;"&gt;$this</span>->width,((<span style="color: #800080;"&gt;$this</span>->width)/<span style="color: #800080;"&gt;$resize_ratio</span><span style="color: #000000;"&gt;)); } } </span><span style="color: #0000ff;"&gt;else</span><span style="color: #000000;"&gt; { </span><span style="color: #008000;"&gt;//</span><span style="color: #008000;"&gt;不裁图</span> <span style="color: #0000ff;"&gt;if</span>(<span style="color: #800080;"&gt;$ratio</span>>=<span style="color: #800080;"&gt;$resize_ratio</span><span style="color: #000000;"&gt;) { </span><span style="color: #800080;"&gt;$newimg</span> = imagecreatetruecolor(<span style="color: #800080;"&gt;$this</span>->resize_width,(<span style="color: #800080;"&gt;$this</span>->resize_width)/<span style="color: #800080;"&gt;$ratio</span><span style="color: #000000;"&gt;); </span><span style="color: #0000ff;"&gt;if</span>(<span style="color: #800080;"&gt;$this</span>->type=="png"<span style="color: #000000;"&gt;) { imagefill(</span><span style="color: #800080;"&gt;$newimg</span>,127<span style="color: #000000;"&gt;)); } imagecopyresampled(</span><span style="color: #800080;"&gt;$newimg</span>,(<span style="color: #800080;"&gt;$this</span>->resize_width)/<span style="color: #800080;"&gt;$ratio</span>,<span style="color: #800080;"&gt;$this</span>-><span style="color: #000000;"&gt;height); } </span><span style="color: #0000ff;"&gt;else</span><span style="color: #000000;"&gt; { </span><span style="color: #800080;"&gt;$newimg</span> = imagecreatetruecolor((<span style="color: #800080;"&gt;$this</span>->resize_height)*<span style="color: #800080;"&gt;$ratio</span>,<span style="color: #800080;"&gt;$this</span>-><span style="color: #000000;"&gt;resize_height); </span><span style="color: #0000ff;"&gt;if</span>(<span style="color: #800080;"&gt;$this</span>->type=="png"<span style="color: #000000;"&gt;) { imagefill(</span><span style="color: #800080;"&gt;$newimg</span>,(<span style="color: #800080;"&gt;$this</span>->resize_height)*<span style="color: #800080;"&gt;$ratio</span>,<span style="color: #800080;"&gt;$this</span>-><span style="color: #000000;"&gt;height); } } </span><span style="color: #0000ff;"&gt;if</span>(<span style="color: #800080;"&gt;$this</span>->type=="png"<span style="color: #000000;"&gt;) { imagesavealpha(</span><span style="color: #800080;"&gt;$newimg</span>,<span style="color: #0000ff;"&gt;true</span><span style="color: #000000;"&gt;); imagepng (</span><span style="color: #800080;"&gt;$newimg</span>,<span style="color: #800080;"&gt;$this</span>-><span style="color: #000000;"&gt;dstimg); } </span><span style="color: #0000ff;"&gt;else</span><span style="color: #000000;"&gt; { imagejpeg (</span><span style="color: #800080;"&gt;$newimg</span>,<span style="color: #800080;"&gt;$this</span>-><span style="color: #000000;"&gt;dstimg); } } </span><span style="color: #008000;"&gt;//</span><span style="color: #008000;"&gt;初始化图象</span> <span style="color: #0000ff;"&gt;private</span> <span style="color: #0000ff;"&gt;function</span><span style="color: #000000;"&gt; initi_img() { </span><span style="color: #0000ff;"&gt;if</span>(<span style="color: #800080;"&gt;$this</span>->type=="jpg"<span style="color: #000000;"&gt;) { </span><span style="color: #800080;"&gt;$this</span>->im = imagecreatefromjpeg(<span style="color: #800080;"&gt;$this</span>-><span style="color: #000000;"&gt;srcimg); } </span><span style="color: #0000ff;"&gt;if</span>(<span style="color: #800080;"&gt;$this</span>->type=="gif"<span style="color: #000000;"&gt;) { </span><span style="color: #800080;"&gt;$this</span>->im = imagecreatefromgif(<span style="color: #800080;"&gt;$this</span>-><span style="color: #000000;"&gt;srcimg); } </span><span style="color: #0000ff;"&gt;if</span>(<span style="color: #800080;"&gt;$this</span>->type=="png"<span style="color: #000000;"&gt;) { </span><span style="color: #800080;"&gt;$this</span>->im = imagecreatefrompng(<span style="color: #800080;"&gt;$this</span>-><span style="color: #000000;"&gt;srcimg); } } </span><span style="color: #008000;"&gt;//</span><span style="color: #008000;"&gt;图象目标地址</span> <span style="color: #0000ff;"&gt;private</span> <span style="color: #0000ff;"&gt;function</span> dst_img(<span style="color: #800080;"&gt;$dstpath</span><span style="color: #000000;"&gt;) { </span><span style="color: #800080;"&gt;$full_length</span> = <span style="color: #008080;"&gt;strlen</span>(<span style="color: #800080;"&gt;$this</span>-><span style="color: #000000;"&gt;srcimg); </span><span style="color: #800080;"&gt;$type_length</span> = <span style="color: #008080;"&gt;strlen</span>(<span style="color: #800080;"&gt;$this</span>-><span style="color: #000000;"&gt;type); </span><span style="color: #800080;"&gt;$name_length</span> = <span style="color: #800080;"&gt;$full_length</span>-<span style="color: #800080;"&gt;$type_length</span><span style="color: #000000;"&gt;; </span><span style="color: #800080;"&gt;$name</span> = <span style="color: #008080;"&gt;substr</span>(<span style="color: #800080;"&gt;$this</span>->srcimg,<span style="color: #800080;"&gt;$name_length</span>-1<span style="color: #000000;"&gt;); </span><span style="color: #800080;"&gt;$this</span>->dstimg = <span style="color: #800080;"&gt;$dstpath</span><span style="color: #000000;"&gt;; } }

?>

使用

使用时,直接调用类的构造函数即可,构造函数如下:

= resizeimage($imgPath,$width,$height,$isCut,$savePath);

参数

$imgPath:原图片地址

$width:缩略图

$height:缩略图

$isCut:是否裁剪,bool值

$savePath:缩略图地址(可以跟原图片地址相同)

示例

PHP "ResizeImage.PHP"</span><span style="color: #008000;"&gt;//</span><span style="color: #008000;"&gt;jpg</span> <span style="color: #800080;"&gt;$jpgResize</span> = <span style="color: #0000ff;"&gt;new</span> ResizeImage("img/test_1920_1200.jpg",320,240,<span style="color: #0000ff;"&gt;false</span>,"img/test_320_240.jpg"<span style="color: #000000;"&gt;); </span><span style="color: #008000;"&gt;//</span><span style="color: #008000;"&gt;png</span> <span style="color: #800080;"&gt;$pngResize</span> = <span style="color: #0000ff;"&gt;new</span> ResizeImage("img/test_1024_746.png","img/test_320_240.png"<span style="color: #000000;"&gt;);

?>

效果

403f0.jpg" alt="">  

猜你在找的PHP相关文章