解决thinkphp添加水印后透明像素变黑
  • 首页 > 工作时间 > php > 正文
  • 作者:山庄少主
  • 2020年8月28日 15:49 星期五
  • 浏览:700 次
  • 字号:  
  • 评论:0 条
  • 字数:1459 个
  • 显示:1200px 1360px 1600px
  • 关灯  编辑

  • 在使用thinkphp对图片处理的时候,对于png图片的处理比如裁剪,缩略图,都会出现背景为白色,不是透明的情况。

    这里只是使用了thinkphp3.2.3版本,默认GD库处理,其他的类库自行解决哦。


    下面我们看,thinkphp裁剪png图片背景不透明的问题怎么解决?


    其实,解决起来也是很简单的,只要将文件ThinkPHP/Library/Think/Image/Driver/GD.class.php修改其中的三个方法即可。

    1、save()方法,第98行。

    1. 原代码:
    2.  
    3. $fun  =   'image'.$type;
    4. $fun($this->img, $imgname);
    5.  
    6. 修改为:
    7.  
    8. $fun  =   'image'.$type;
    9. imagesavealpha($this->img, true);
    10. $fun($this->img, $imgname);

    2、crop()方法,第168行。

    1. 原代码:
    2.  
    3. $color = imagecolorallocate($img, 255, 255, 255);
    4. imagefill($img, 0, 0, $color);
    5.  
    6. 修改为:
    7.  
    8. $color = imagecolorallocatealpha($img, 0, 0, 0, 127);
    9. imagefill($img, 0, 0, $color);
    10. imagesavealpha($img, true);

    3、thumb()方法,第266行。

    1. 原代码:
    2.  
    3. $color = imagecolorallocate($img, 255, 255, 255);
    4.  
    5. 修改为:
    6.  
    7. $color = imagecolorallocatealpha($img, 0, 0, 0, 127);


    通过修改上面三处方法,即可实现thinkphp裁剪png图片支持透明的效果了。

    0
     您审批这篇奏折共花了: 
    没有上一篇咯,看看别的吧!?
    lnmp 重新编译php扩展(本文以imap为例)
    二维码加载中...
    本文作者:山庄少主     文章标题: 解决thinkphp添加水印后透明像素变黑
    本文地址:http://www.ningguoteng.com/?post=307 本文已被百度收录
    版权声明:若无注明,本文皆为“宁国腾|专业分享网站开发-PHP,软件设计博客”原创,转载请保留文章出处。
      昵称  邮箱  主页
    返回顶部返回首页
    版权所有:宁国腾|专业分享网站开发-PHP,软件设计博客站长:山庄少主主题:国腾博客 v3.3程序:emlog加载耗时:21.606秒查询数据库:42次消耗内存:3.13MB鲁ICP备1500751号