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

时间:2013-07-22 08:26:24

标签: php php-gd

我正在尝试从URL获取图像,然后将其保存到服务器。这是一个简单的任务,是的,但是这个图像有透明度...事情是,当我将该文件保存到我的PC或当我尝试通过PHP将其保存到我的服务器时,我得到相同的结果:图像变得混乱,透明度设置为黑色。图片的网址是:

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

另一个奇怪的事情是我的浏览器说图像是MIME Type 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));

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

1 个答案:

答案 0 :(得分:0)

尝试此代码(第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:我看到的主要问题是你提供的网址上的图片并不是真正的png。