将生成的图像文件传送到客户端,而无需先将文件写入服务器目录

发布于 2024-09-14 09:06:06 字数 172 浏览 3 评论 0原文

尽管将目录权限设置为 777,我仍然无法让 PHP 脚本将其生成的图像文件写入服务器上的目录。因此,与其苦苦解决我想的这个问题,为什么不创造一个新问题呢?事实上,我认为可能有一个更简单的解决方案。是否可以获取服务器上生成的图像文件(流)并“欺骗”客户端,以便该文件不必存在于服务器上的目录中,以便可以将结果直接传递给客户端浏览器?

Despite setting directory permissions to 777, I still can't get a PHP script to write an image file that it generated to a directory on the server. So, rather than wrestling with that problem I thought, why not create a new one. Actually, I thought there might be an easier solution. Is it possible to take an image file (stream) that is generated on the server and "trick" the client so that the file doesn't have to exist in a directory on the server, so that the results can just be handed directly to the browser?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

扛刀软妹 2024-09-21 09:06:07

是的,这是可能的。将内容类型标头设置为“image/png”,然后输出图像数据流。

header("Content-type: image/png");

Yes it is possible. Set the content type header to "image/png", then output the image data stream.

header("Content-type: image/png");
时光倒影 2024-09-21 09:06:07

如果您只是即时制作图像,则无需编写该文件。
就在 php 文件的顶部将文件类型设置为“image/png”(或其他)并写入图形而不是文本。

<?php
$width = 300;
$height = 200;
$im     = imagecreate($width,$height);
$gray   = imagecolorallocate ($im,0xcc,0xcc,0xcc);
imagefilledrectangle($im,0,0,100,100,$grey);
header ("Content-type: image/png");
imagepng($im);
?> 

You don't need to write the file if you are just making images on the fly.
Just at the top of the php file set the file type to 'image/png' (or whatever) and write graphics instead of text.

<?php
$width = 300;
$height = 200;
$im     = imagecreate($width,$height);
$gray   = imagecolorallocate ($im,0xcc,0xcc,0xcc);
imagefilledrectangle($im,0,0,100,100,$grey);
header ("Content-type: image/png");
imagepng($im);
?> 
年少掌心 2024-09-21 09:06:07

当然。假设变量 $im 中有二进制数据。就做吧:

header("Content-type: image/png"); //change to suit your needs
echo $im;

PHP 完全能够输出非 HTML 数据。

Sure. Let's say you have the binary data in variable $im. Just do:

header("Content-type: image/png"); //change to suit your needs
echo $im;

PHP is perfectly capable of outputting non-HTML data.

生活了然无味 2024-09-21 09:06:07

如果用作图像 URI

将数据转换为 base64 (base64_encode) 并将其用作 URI:

data:MIMETYPE;base64,STUFF

例如

data:image/png;base64,iVBORAAAA...

如果仅显示图像

只需设置内容类型为正确的 MIME 并回显内容。

If using as a image URI

Convert your data to base64 (base64_encode) and use this as the URI:

data:MIMETYPE;base64,STUFF

e.g.

data:image/png;base64,iVBORAAAA...

If displaying image only

Just set the content type to the correct MIME and echo the contents.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文