在PHP中从URL保存透明图像
我正在尝试构建一个类来执行许多照片操作,其中一个方法将从用户上传图像,但我还需要构建一个方法来从URL抓取照片,并在其上运行其他方法,就像使用用户的POST表单上传照片一样 下面是我从URL获取图像的函数的开始,它可以工作,但仍然需要工作。在代码下面,您可以看到运行此函数的结果图像。也就是原始图像,看看它应该是什么样子。您可以看到,此函数使图像在此透明图像上具有黑色背景。我怎样才能让它看起来更好在PHP中从URL保存透明图像,php,gd,Php,Gd,我正在尝试构建一个类来执行许多照片操作,其中一个方法将从用户上传图像,但我还需要构建一个方法来从URL抓取照片,并在其上运行其他方法,就像使用用户的POST表单上传照片一样 下面是我从URL获取图像的函数的开始,它可以工作,但仍然需要工作。在代码下面,您可以看到运行此函数的结果图像。也就是原始图像,看看它应该是什么样子。您可以看到,此函数使图像在此透明图像上具有黑色背景。我怎样才能让它看起来更好 $url = 'http://a0.twimg.com/a/1262802780/images/tw
$url = 'http://a0.twimg.com/a/1262802780/images/twitter_logo_header.png';
//run our function
savePhotofromURL($url, 'no');
// photo function should grab an photo from a URL
function savePhotofromURL($photo_url, $saveimage = 'yes'){
if(isset($photo_url) && $photo_url != '') {
//get info about photo
$photo_info = getimagesize($photo_url);
$source_width = $photo_info['0'];
$source_height = $photo_info['1'];
$source_type = $photo_info['mime'];
//grab the Photo from URL
$photo = imagecreatefromstring(file_get_contents($photo_url));
if (is_resource($photo) === true){
if($saveimage === 'yes'){
// TO DO: resize image and make the thumbs code would go here if we are saving image:
// TO DO: resize source image if it is wider then 800 pixels
// TO DO: make 1 thumbnail that is 150 pixels wide
}else{
// We are not saving the image show it in the user's browser
// TO DO: we will add in correct photo type soon
header('Content-Type: image/gif');
imagejpeg($photo, null, 100);
imagedestroy($photo);
}
}else{
// not a valid resource, show error
echo 'error getting URL photo from ' .$photo_url;
}
}else{
// url of image was empty
echo 'The URL was not passed into our function';
}
}
结果如下所示而不是像这样
以下两个调用将告诉php使用png图像中的alpha混合:
ImageAlphaBlending($photo, false);
ImageSaveAlpha($photo, true);
编辑:
我看到你也在以JPEG格式输出图像。JPEG不支持透明度,因此无论你做什么,最终都会得到不正确的背景颜色。另请参见此相关问题:以下两个调用将告诉php使用png图像中的alpha混合:
ImageAlphaBlending($photo, false);
ImageSaveAlpha($photo, true);
编辑:
我看到你也在以JPEG格式输出图像。JPEG不支持透明度,因此无论你做什么,最终都会得到不正确的背景颜色。另请参见此相关问题:您需要添加对图像类型的更好支持,并扩展其透明度
由于图像是透明的,我们可以知道它是GIF或PNG,但是您在使用
imagejpeg()
时发送GIF标题-JPEG不支持任何类型的透明度。但是如果是png,您可能还必须考虑其alpha trans或index透明度。您需要添加对图像类型的更好支持,并扩展其透明度
由于图像是透明的,我们可以知道它是GIF或PNG,但是您在使用
imagejpeg()
时发送GIF标题-JPEG不支持任何类型的透明度。但是如果它是png,你可能还必须考虑它的alpha trans或index透明度。是的,我计划在中添加它,我只是在发布之前添加了获取图像类型的功能,所以我没有添加代码来使用该数据。是的,我计划在中添加它,我只是在发布之前添加了获取图像类型的功能,所以我没有添加使用该数据的代码。是的,jpg输出只是我在玩,我将根据图像类型使其执行不同的操作,对于png图像,我将输出或另存为png图像。我试过了(照片,假的);和ImageSaveAlpha($photo,true);但即使输出为png,它似乎也不会改变任何东西jpg输出只是我在玩,我会根据图像类型让它做不同的事情,对于png图像,我会输出或另存为png图像。我试过了(照片,假的);和ImageSaveAlpha($photo,true);但即使输出为PNG,它似乎也不会改变任何东西