让 PHP 页面输出静态图像
我希望 PHP 能够发送 3 个图像中的 1 个,具体取决于 $_GET[]
参数。我现在有三个独立的 PNG 图像,并且希望 PHP 脚本将这些图像嵌入其中,然后返回指定的图像。所以,我想要一个 PHP 脚本而不是 3 个图像。这可能吗?我不需要即时创建特殊图像,只需打印其中一张即可。谢谢!
I want a PHP to be able to send 1 of 3 images, depending on a $_GET[]
parameter. I have the images as three separate PNGs right now, and would like the PHP script to have those embedded in it, then return the specified image. So, I want one PHP script instead of 3 images. Is this possible? I don't need to create special images on the fly, just print out one of those. Thanks!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
如果您的图像位于文件中,请使用 PHP 的 readfile() 函数,并发送输出之前的内容类型标头:
编辑:
您还可以通过将图像编码为 Base64 来将图像嵌入脚本中,然后将它们嵌入为字符串在 PHP 中,然后使用 base64_decode 对其进行解码以传递它们:
您可以还可以使用 PHP 在命令行上对图像进行编码。只需在命令行中执行此 PHP 脚本 (
php script.php image1.png image2.png image3.png > output.php
) 并保存其输出,并将其合并到您的脚本中:If your images are in files, use PHP's readfile() function, and send a content-type header before outputting it:
EDIT:
You could also embed your images in the script by encoding them e.g. as Base64, then embed them as strings in PHP, then decode it there with base64_decode to deliver them:
You could also use PHP to encode the image on the command line. Just execute this PHP script in the command line (
php script.php image1.png image2.png image3.png > output.php
) and save its output, and incorporate it into your script:我没有测试以下内容,但它应该有效。使用此脚本获取将包含图像数据的 PHP 代码。
要获取图像:
在代码中为每个图像获取这个(可能很大)字符串。打印并复制然后粘贴。通过网络将其导入为文本文件。这取决于你。
然后,要打印图像(仅打印图像,就好像 PHP 脚本是图像一样),请执行以下操作:
当然,您可以将每个图像数据放入数组或类似的内容中。
让我知道它是否有效。
I have not tested the following, but it should work. Use this script to get PHP code that will contain the image data.
To get the image:
Get this (potentially big) string in your code where you want the image, for each image. Print it and copy it then paste it. Import it as a text file over the web. That's up to you.
Then, to print the image (only the image as if the PHP script were the image), do:
Of course, you would put each image data in an array or something like that.
Let me know if it works.
是的,这是可能的。
执行此操作:
请记住,使用这种方法您可能会失去浏览器缓存带来的任何好处......
Yes, it's possible.
Do this:
Remember that you will probably lose any benefits from browser's cache with this approach...
一种快速但不真正安全也不优雅的方法...
故事的寓意:使用 header() 和 readfile() =D
A fast but not really secure nor elegant way to do it...
the moral of the story: use header() and readfile() =D