如何使用PHP获取和保存THIS透明图像


How to get and save THIS transparent image with PHP

我正在尝试从URL获取图像,然后将其保存到服务器。这是一项简单的任务,是的,但这张照片是透明的。。。问题是,当我把这个文件保存到我的电脑上,或者当我试图通过PHP获取并保存到我服务器上时,我会得到同样的结果:图像的透明度设置为黑色,一切都变得一团糟。图像的URL为:

http://cellufun.com/p/avatarimage/agb.aspx?i=Body|M04001|衬衫|M10020|

另一件奇怪的事情是,我的浏览器说图像是MIME类型的image/png,但我不能使用imagecreatefrompng();因为我收到"图像不是有效的PNG"错误。。。

这是我的代码(我确实尝试了其他解决方案,这是我上次尝试的):

<?php
$result=file_get_contents("http://cellufun.com/p/avatarimage/agb.aspx?i=Body|F04001|Shirt|F10020|Pants|MO55|");
$img = imageCreateFromstring($result);
imageAlphaBlending($img, true);
imageSaveAlpha($img, true);
imagecolortransparent($img);

header("Content-type: image/png");
imagepng($img);
?>

哦,我刚刚在copy()函数中尝试了这个图像,但仍然得到了相同的结果。。。看起来图像的大小比原始图像小。。。刚刚试过这个:

file_put_contents("files/test.png",file_get_contents($result));

仍然没有工作。。。所以它与图像本身有关,因为无论我试图获得什么数据,它都不起作用。

试试这个代码(第2-4行的更改):

<?php
$img = imageCreateFromgif("http://cellufun.com/p/avatarimage/agb.aspx?i=Body|M04001|Shirt|M10020|");
$index = imagecolorexact($img, 0, 0, 0); 
imagecolortransparent($img, $index); 
header("Content-type: image/png");
imagepng($img);
?>

这对我有用,尽管这是个小把戏;)。。我不知道为什么质量更差。。

PS:我看到的主要问题是,你提供的url中的图像并不是真正的png。