PHP创建图像而不声明整个页面的图像标题

时间:2010-01-06 00:26:50

标签: php html

我想在我的网页上用PHP创建几个图像。有没有办法在没有在自己的PHP文件中创建每个图像然后将这些文件放在img标签中的这些文件中?

4 个答案:

答案 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脚本时,它只能返回标题,只返回一个图像的数据 - 这意味着它必须多次调用。