<?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']未设置时,我想显示文本:无法加载图像。我是怎么做到的?因为这似乎不起作用......
问候
答案 0 :(得分:1)
您需要做的就是使用GD。使用imagecreatefrompng()将所请求的图像加载到PHP中,因为你已经在数组中列出了png,你必须使用imagecreatefromjpeg()或其他什么,具体取决于它们的格式。然后使用其中一个文本编写器(如imagestring())将文本写入imagecreatefrompng()返回的图像资源中的位置,然后将图像资源返回给浏览器。
也可以使用其中一种使用外部字体的函数,如imagettftext(),但需要在服务器上使用相应的字体。
对于错误,如果你想让它成为一个图像,你需要使用imagecreatetruecolor()来制作一个新的图像,然后使用imagecolorallocate()为它指定一个调色板,然后使用imagestring()来将错误消息写入图像并返回。当然,在GIMP或其他东西中制作错误图像并返回它可能更容易,而不是每次都会遇到生成新错误图像的麻烦。
答案 1 :(得分:0)
只需删除header('Content-type: image/png');
块
else{}
行的行即可
这样就可以了。目前,您正在告诉用户的浏览器将该文本视为图像,当然这是行不通的。如果你想要一个带有“无法加载图像”文字的图像,那就比那复杂了......