我希望PHP能够发送3个图像中的1个,具体取决于参数$_GET[]
。我现在将图像作为三个独立的PNG,并希望PHP脚本将它们嵌入其中,然后返回指定的图像。所以,我想要一个PHP脚本而不是3个图像。这可能吗?我不需要即时创建特殊图像,只需打印其中一个。谢谢!让PHP页面输出静态图像
回答
如果您的图片文件,使用PHP的readfile()功能,并输出之前发送的内容类型标头:
<?php
$imagePaths = array(
'1' => 'file1.png',
'2' => 'file2.png',
'3' => 'file3.png',
);
$type = $_GET['img'];
if (isset($imagePaths[$type])) {
$imagePath = $imagePaths[$type];
header('Content-Type: image/png');
readfile($imagePath);
} else {
header('HTTP/1.1 404 File Not Found');
echo 'File not found.';
}
?>
编辑:
您还可以通过编码它们例如嵌入您的图片脚本作为Base64,然后将它们嵌入在PHP中的字符串,然后用base64_decode有对其进行解码,以解救他们
<?php
$imageData = array(
'1' => '...', // Base64-encoded data as string
...
);
$type = $_GET['img'];
if (isset($imageData[$type])) {
header('Content-Type: image/png');
echo base64_decode($imageData[$type]);
} else {
header('HTTP/1.1 404 File Not Found');
echo 'File not found.';
}
?>
你也可以使用PHP来对图像进行编码的命令行上。只是在执行命令行(php script.php image1.png image2.png image3.png > output.php
)这个PHP脚本并保存它的输出,并将其纳入你的脚本:
<?php
$imageData = array();
foreach ($argv as $index => $imagePath)
$imageData[(string)($index + 1)] = base64_encode(file_get_contents($imagePath));
echo '$imageData = '.var_export($imageData, true).';';
?>
是的,这是可能的。
这样做:
- 写PHP脚本决定哪些图像输出。
- 使用header()函数(即内容类型)设置适当的标头
- 打开文件,读取它并将其发送到输出流。
请记住,你可能会从浏览器的使用这种方法缓存丢失任何好处......
这不会仍然需要有图像作为单独的文件?有什么方法将它们嵌入到脚本中? – 2010-09-25 22:05:17
他为什么要放宽浏览器缓存?图像仍然通过具有GET参数的唯一URL进行定位。 – doc 2010-09-25 22:06:35
你为什么要嵌入一个脚本的图像? – 2010-09-25 22:07:28
一种快速,但没有真正安全的,也没有优雅的方式来做到这一点...
<?php
switch($_GET['type']){
case "1":
$image = "image1.png";
break;
case "2":
$image = "image2.png";
break;
case "3":
$image = "image3.png";
break;
}
header('Content-Type: image/png');
readfile($image);
?>
这个故事的寓意是:用头()和ReadFile的()= d
我没有测试以下,但它应该工作。使用此脚本获取将包含图像数据的PHP代码。
要获取图像:
$image = base64_encode(file_get_contents("image.png"));
// The string $image now contains your image data.
获取你的代码,你想这个图片的(潜在的巨大)的字符串,每个图像。打印并复制并粘贴。通过网络将其作为文本文件导入。这取决于你。
然后,打印图像(仅图像仿佛PHP脚本为图像),这样做:
header("content-type: image/png");
print base64_decode($image);
当然,你可以把每个图像数据在阵列或类似的东西。
让我知道它是否有效。
- 1. 在静态页面上输出缓存?
- 2. MAGENTO - 不输出静态页面内容
- 3. 静态图像没有用php生成的页面缓存
- 4. PHP如何输出动态图像
- 5. 从动态PHP页面生成HTML静态页面
- 6. wordpress首页静态页面,和主图像,并删除家庭
- 7. PHP输出图像发出
- 8. 静态PHP页面产生404错误
- 9. 静态HTML页面
- 10. Link_to静态页面
- 11. Django静态页面?
- 12. 让PHP输出
- 13. 在asp.net中为“几乎静态”的页面输出缓存mvc
- 14. 半静态/动态页面
- 15. 分页在静态页面
- 16. 静态页面的Django站点地图
- 17. 静态页面不显示图标
- 18. 在CSS中有静态图像的静态页脚?
- 19. 静态图像。不随页面大小移动
- 20. 静态HTML页面中的mvc路径图像
- 21. 扩展带有图像字段的Rainlab静态页面
- 22. PHP包括让整个页面出现?
- 23. PHP图像输出问题
- 24. 生成PHP输出图像
- 25. PHP无法输出图像
- 26. 静态页面(.html)与ASP.NET页面(.aspx)
- 27. 静态HTML页面作为Sharepoint页面
- 28. 导轨静态图像没有出现
- 29. 清漆+静态HTML页面
- 30. Jboss中的静态页面
非常感谢Archimedix!我会看看,这正是我需要的! – 2010-09-25 22:16:38
工作正常!谢谢! – 2010-09-25 22:19:29
使用类似这样的方法('header()'输出内容类型期望并使用'readfile')导致IE9默认为Quirks作为文档模式。可以做任何事情告诉IE不要怪,这只是一个图像? [示例](http://www.homeeducatormom.com/wp-content/uploads/2012/11/orange-scarf1.jpg)(不是我的网站) – veeTrain 2013-07-23 19:35:08