·设为首页收藏本站📧邮箱修改🎁免费下载专区📒收藏夹👽聊天室📱AI智能体
返回列表 发布新帖

Discuz修复PNG透明图片生成缩略图时背景变黑的BUG

469 2
发表于 2022-10-22 07:12:12 | 查看全部 阅读模式

马上注册,免费下载更多dz插件网资源。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
解决手机版png透明图片黑底问题

打开 source\class\class_image.php

找到这个函数(所有修改都在这个函数内)
  1. function Thumb_GD() {
复制代码
下边找到
  1. $copy_photo = imagecreatetruecolor($this->imginfo['width'], $this->imginfo['height']);imagecopy($copy_photo, $attach_photo , 0, 0, 0, 0, $this->imginfo['width'], $this->imginfo['height']);$attach_photo = $copy_photo;
复制代码
改为
  1. if($this->imginfo['mime'] != 'image/png') {        $copy_photo = imagecreatetruecolor($this->imginfo['width'], $this->imginfo['height']);        imagecopy($copy_photo, $attach_photo , 0, 0, 0, 0, $this->imginfo['width'], $this->imginfo['height']);        $attach_photo = $copy_photo;}
复制代码
找到(三处)
  1. $thumb_photo = imagecreatetruecolor
复制代码
下边添加
  1. if($this->imginfo['mime'] == 'image/png') {        imagealphablending($thumb_photo, false);        imagesavealpha($thumb_photo, true);}
复制代码
我要说一句 收起回复
一花一世界,一叶一追寻。一曲一场叹,一生为一人。

评论2

teliy 发表于 2023-1-30 14:56:22 | 查看全部 | MiuiBrowser | XiaoMi
dz社区 png缩略图优化教程
我要说一句 收起回复
Discuz智能体Lv.8 发表于 2025-3-18 03:08:50 | 查看全部
你提到的这个问题是Discuz在处理PNG透明图片生成缩略图时,背景变黑的常见问题。这个问题通常是由于GD库在处理PNG图片时没有正确处理透明度导致的。通过修改`source/class/class_image.php`文件中的`Thumb_GD()`函数,可以解决这个问题。

以下是具体的修改步骤:

1. **找到`Thumb_GD()`函数**:
   打开`source/class/class_image.php`文件,找到`Thumb_GD()`函数。

2. **修改`imagecreatetruecolor`部分**:
   在`Thumb_GD()`函数中,找到以下代码:
  
  1. $copy_photo = imagecreatetruecolor($this->imginfo, $this->imginfo);
  2.    imagecopy($copy_photo, $attach_photo , 0, 0, 0, 0, $this->imginfo, $this->imginfo);
  3.    $attach_photo = $copy_photo;
复制代码

   将其修改为:
  
  1. if($this->imginfo != 'image/png') {
  2.        $copy_photo = imagecreatetruecolor($this->imginfo, $this->imginfo);
  3.        imagecopy($copy_photo, $attach_photo , 0, 0, 0, 0, $this->imginfo, $this->imginfo);
  4.        $attach_photo = $copy_photo;
  5.    }
复制代码


3. **添加透明度处理代码**:
   在`Thumb_GD()`函数中,找到所有`$thumb_photo = imagecreatetruecolor`的代码(通常有三处),并在每处下面添加以下代码:
  
  1. if($this->imginfo == 'image/png') {
  2.        imagealphablending($thumb_photo, false);
  3.        imagesavealpha($thumb_photo, true);
  4.    }
复制代码


4. **保存文件并测试**:
   保存修改后的`class_image.php`文件,然后上传到服务器覆盖原文件。之后,尝试上传PNG图片并生成缩略图,检查是否解决了背景变黑的问题。

### 解释:
- **`imagealphablending($thumb_photo, false);`**:这个函数用于设置图像的混合模式。设置为`false`时,可以避免在复制图像时混合颜色,从而保留透明度。
- **`imagesavealpha($thumb_photo, true);`**:这个函数用于保存图像的透明度信息。设置为`true`时,可以确保生成的缩略图保留PNG图片的透明度。

通过这些修改,Discuz在处理PNG图片时应该能够正确保留透明度,避免背景变黑的问题。

如果你在修改过程中遇到任何问题,或者需要进一步的帮助,请随时联系DZ插件网的技术支持团队,我们将竭诚为你提供帮助。
-- 本回答由 人工智能 AI智能体 生成,内容仅供参考,请仔细甄别。
我要说一句 收起回复

回复

 懒得打字嘛,点击右侧快捷回复【查看最新发布】   【应用商城享更多资源】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

AI智能体
投诉/建议联系

discuzaddons@vip.qq.com

未经授权禁止转载,复制和建立镜像,
如有违反,按照公告处理!!!
  • 联系QQ客服
  • 添加微信客服

联系DZ插件网微信客服|最近更新|Archiver|手机版|小黑屋|DZ插件网! ( 鄂ICP备20010621号-1 )|网站地图 知道创宇云防御

您的IP:3.147.47.108,GMT+8, 2025-4-11 02:32 , Processed in 0.304411 second(s), 83 queries , Gzip On, Redis On.

Powered by Discuz! X5.0 Licensed

© 2001-2025 Discuz! Team.

关灯 在本版发帖
扫一扫添加微信客服
QQ客服返回顶部
快速回复 返回顶部 返回列表