我想在我的网页上用PHP创建几个图像。有没有办法在没有在自己的PHP文件中创建每个图像然后将这些文件放在img标签中的这些文件中?
答案 0 :(得分:4)
我建议您使用base64_encode()将图像转换为BASE64,这样就可以将图像数据直接插入到HTML标记中(比注入二进制文件更安全)。
该过程为described at this site。但简而言之,只需要一个看起来如下的标签(“base64”之后的所有内容都是编码数据):
<img src="data:image/gif;base64,R0lGODlhEAAOALMAAOazToeHh0tLS/7LZv/0jvb29t/f3//Ub/
/ge8WSLf/rhf/3kdbW1mxsbP//mf///yH5BAAAAAAALAAAAAAQAA4AAARe8L1Ekyky67QZ1hLnjM5UUde0ECwLJoExKcpp
V0aCcGCmTIHEIUEqjgaORCMxIC6e0CcguWw6aFjsVMkkIr7g77ZKPJjPZqIyd7sJAgVGoEGv2xsBxqNgYPj/gAwXEQA7"
width="16" height="14" alt="embedded folder icon">
答案 1 :(得分:2)
不,由于content-type
标题是页面范围的,所以没有别的方法;您不能为一个页面提供不同的内容类型。但是你不需要为每个图像都有一个PHP文件,你可以这样做:
<img src="image_generator.php" />
在image_generator.php中,您声明图像标题并输出图像,并可能根据查询字符串生成图像。例如,您可以将图像ID附加到URL:
<img src="image_generator.php?id=100" />
然后在image_generator.php中,只需根据$_GET['id']
选择图像数据并生成它。
答案 2 :(得分:0)
您要么使用标头直接输出图像字节,要么将它们写入文件并将它们放在src属性中,没有其他办法。
一个简洁的方法是在src属性中引用一个特定的图像创建脚本:
<img src="imagecreator.php?img=43" />
在这个脚本中你显然应该使用header()方法并输出图像字节。
<?php
$im = imagecreatefrompng($_GET['img'].".png"); //Silly example
header('Content-type: image/png');
imagepng($im);
imagedestroy($im);
?>
答案 3 :(得分:0)
一个可能的解决方案,就是没有几个PHP脚本,只有一个,可以根据参数生成不同的图像。
例如,像这样的一些伪代码应该使我的意思更清楚:
$id_img = intval($_GET['id']);
switch ($id_img) {
case '1':
// generate image 1
break;
case '2':
// generate image 2
break;
case '3':
// generate image 3
break;
default:
// send some kind of 404 error
}
您的<img>
代码看起来有点像这样:
<img src="http://yoursite.com/img-generator.php?id=1" alt="..." />
<img src="http://yoursite.com/img-generator.php?id=2" alt="..." />
尽管如此,每次生成PHP脚本时,它只能返回标题,只返回一个图像的数据 - 这意味着它必须多次调用。