You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP GD库调用rotatePreserve后partialEye分配颜色全透明问题

问题根因

  • 核心故障来自partialEye函数中创建图像使用的是imagecreate()方法:该方法生成的是基于256色调色板的索引图像,对透明alpha通道的支持能力极弱,且可存储的颜色数量有限。
  • 当你先调用rotatePreserve()后,传入partialEye的源图像是rotatePreserve内部用imagecreatetruecolor()创建的真彩色图像,将真彩色图像内容拷贝到调色板图像时,会占满256色调色板空间,后续调用imagecolorallocate分配的颜色无法被正常加入调色板,被错误映射为透明色。

修复方案

只需要修改partialEye函数的图像创建代码即可:
将原来的

$part_eye = imagecreate($x, $y);

替换为:

$part_eye = imagecreatetruecolor($x, $y);

同时建议额外补充保存alpha通道的配置,避免后续输出透明异常,在imagealphablending($part_eye, true);代码后加一行:

imagesavealpha($part_eye, true);

其他非致命问题说明

两个函数中return语句后的imagedestroy代码永远不会执行,属于无效代码,可以删除或者调整到return之前执行,避免内存泄漏。

内容的提问来源于stack exchange,提问作者TwistedT

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 02:39:02