28
08月
2020
在使用thinkphp对图片处理的时候,对于png图片的处理比如裁剪,缩略图,都会出现背景为白色,不是透明的情况。
这里只是使用了thinkphp3.2.3
版本,默认GD库
处理,其他的类库自行解决哦。
下面我们看,thinkphp裁剪png图片背景不透明的问题怎么解决?
其实,解决起来也是很简单的,只要将文件ThinkPHP/Library/Think/Image/Driver/GD.class.php
修改其中的三个方法即可。
1、save()方法,第98行。
- 原代码:
- $fun = 'image'.$type;
- $fun($this->img, $imgname);
- 修改为:
- $fun = 'image'.$type;
- imagesavealpha($this->img, true);
- $fun($this->img, $imgname);
2、crop()方法,第168行。
- 原代码:
- $color = imagecolorallocate($img, 255, 255, 255);
- imagefill($img, 0, 0, $color);
- 修改为:
- $color = imagecolorallocatealpha($img, 0, 0, 0, 127);
- imagefill($img, 0, 0, $color);
- imagesavealpha($img, true);
3、thumb()方法,第266行。
- 原代码:
- $color = imagecolorallocate($img, 255, 255, 255);
- 修改为:
- $color = imagecolorallocatealpha($img, 0, 0, 0, 127);
通过修改上面三处方法,即可实现thinkphp裁剪png图片支持透明的效果了。
特殊说明,本文版权归 ning个人博客 所有带原创标签请勿转载,转载请注明出处.
本文标题: 解决thinkphp添加水印后透明像素变黑