从url创建图像:多个问题

时间:2010-12-25 10:30:40

标签: php image get png gd

<?php
if(isset($_GET['img']) && is_numeric($_GET['img'])){ 
$img = $_GET['img']; 

$imgarray = array ( 
'1' => 'http://www.path/to/image1.png', 
'2' => 'http://www.path/to/image2.png', 
'3' => 'http://www.path/to/image3.png'
);

$src = $imgarray[$img];
header('Content-type: image/png');
echo file_get_contents($src);
}
else
{
    header('Content-type: image/png');
echo 'Image could not be loaded';
}
?>

你好再次stackoverflow! 我有很多问题。 1:当设置$ _GET ['img']及其数字时,图像将显示正确,但我想在图像的右上角添加文本...我该怎么做?我查看了多个GD教程和示例,但我找不到答案。 2:当$ _GET ['img']未设置时,我想显示文本:无法加载图像。我是怎么做到的?因为这似乎不起作用......

问候

2 个答案:

答案 0 :(得分:1)

您需要做的就是使用GD。使用imagecreatefrompng()将所请求的图像加载到PHP中,因为你已经在数组中列出了png,你必须使用imagecreatefromjpeg()或其他什么,具体取决于它们的格式。然后使用其中一个文本编写器(如imagestring())将文本写入imagecreatefrompng()返回的图像资源中的位置,然后将图像资源返回给浏览器。

也可以使用其中一种使用外部字体的函数,如imagettftext(),但需要在服务器上使用相应的字体。

对于错误,如果你想让它成为一个图像,你需要使用imagecreatetruecolor()来制作一个新的图像,然后使用imagecolorallocate()为它指定一个调色板,然后使用imagestring()来将错误消息写入图像并返回。当然,在GIMP或其他东西中制作错误图像并返回它可能更容易,而不是每次都会遇到生成新错误图像的麻烦。

答案 1 :(得分:0)

只需删除header('Content-type: image/png');

else{}行的行即可

这样就可以了。目前,您正在告诉用户的浏览器将该文本视为图像,当然这是行不通的。如果你想要一个带有“无法加载图像”文字的图像,那就比那复杂了......