我最近刚刚尝试了自适应图像。
它似乎工作正常,除非在转换透明 PNG 时。我有一个图像,它只是透明背景上的一个弯曲的白色形状。当图像被自适应图像转换(我相信它使用 GD 库进行转换)时,白色形状的边缘会出现黑色边框。
下面是带有黑色边框的弯曲边缘的屏幕截图,因此您可以了解我的意思。
原始尺寸 1920x63:http: //i.imgur.com/Cc0hJ.png
我不太了解 GD 库或它如何转换图像,但我确实做了一些搜索,看看它是否是我的目标。我不认为它是。
我还发现了关于同一问题的类似帖子。但是,我尝试编辑 Adaptive Images PHP 以使用@WouterH 建议的答案,但它没有用。他建议创建一种透明颜色,并在复制之前用该颜色填充 $image。代码如下:
$transparent = imagecolorallocatealpha($image, 0, 0, 0, 127);
imagefill($image, 0, 0, $transparent);
imagealphablending($image, true);
在adaptive-images.php 文件中,我找到了以下代码行:
imagealphablending($dst, false);
imagesavealpha($dst,true);
$transparent = imagecolorallocatealpha($dst, 255, 255, 255, 127);
imagefilledrectangle($dst, 0, 0, $new_width, $new_height, $transparent);
这是我进行更改的地方。我尝试了很多变化,因为我不确定正确的顺序是什么,但在大多数情况下,我尝试将其调整为以下内容:
imagesavealpha($dst,true);
$transparent = imagecolorallocatealpha($dst, 0, 0, 0, 127);
imagefill($image, 0, 0, $transparent);
imagealphablending($dst, true);
imagefilledrectangle($dst, 0, 0, $new_width, $new_height, $transparent);
这似乎没有任何区别。根据我尝试的不同方法,我要么为以前透明的任何地方填充黑色,要么仍然存在相同的问题(黑色轮廓)。
希望有人可以帮助我解决这个问题...在此先感谢!