官方的图片处理类处理png的时候,透明度会丢失,下面是解决办法。
文件位置
/vendor/topthink/think-image/src/Image.php
修正 生成缩略图
1. 找到方法: public function thumb($width, $height, $type = self::THUMB_SCALING) 2. 修改代码: // 调整默认颜色 // $color = imagecolorallocate($img, 255, 255, 255); $color = imagecolorallocatealpha($img, 0, 0, 0,127);
修正 裁剪图像
1. 找到方法: public function crop($w, $h, $x = 0, $y = 0, $width = null, $height = null) 2. 修改代码: // 调整默认颜色 // $color = imagecolorallocate($img, 255, 255, 255); $color = imagecolorallocatealpha($img, 0, 0, 0,127);
修正 添加水印
添加水印需要将裁剪的方法一起修改,单独修改不行
只有png才有透明通道1. 找到方法: public function water($source, $locate = self::WATER_SOUTHEAST, $alpha = 100) 2. 修改代码: //imagecopymerge($this->im, $src, $x, $y, 0, 0, $info[0], $info[1], $alpha); imagecopy($this->im, $water, $x, $y, 0, 0, $info[0], $info[1]);
- 本文链接:https://hbsy.cc/thinkphp5-1-%E5%9B%BE%E7%89%87%E9%80%8F%E6%98%8E%E5%BA%A6%E4%B8%A2%E5%A4%B1%E7%9A%84%E9%97%AE%E9%A2%98/
- 版权声明:本博客所有文章除特别声明外,均默认采用 许可协议。