gpt4 book ai didi

Perl CGI 从文件显示图像到浏览器

转载 作者:行者123 更新时间:2023-12-04 22:10:34 25 4
gpt4 key购买 nike

friend 们,
我一直在网上搜索使用 Perl 向网络浏览器显示图像的解决方案,但没有找到适合我的解决方案。
我已经尝试过可能的解决方案,例如:
How To Display an Image with Perl
Outputting Image Data
Return an Image From a Script
而且它们都不适用于我正在做的事情。我想拒绝客户端访问图像(或者甚至只是将图像文件放在 www 根目录之外)并将其发送到服务器端。
这是我正在做的一个例子:

在我的主要 perl 文件中:

...
my $query = CGI->new();

sub main {
### This grabs page content from a module, depending on the page name.
### The module returns the HTML.
my $html = get_page('page', 'session');

### Perform any special conditionals here before printing the header...

print $query->header(some cookie/session data here);
print $html

}

在其中一个模块中:

sub return_page_content {

return <<HTML;
<html>
<body>
<img src="GET IMAGE HERE..." />
</body>
</html>
HTML
}

我曾考虑过在临时目录位置创建图像的副本,但这似乎会破坏使图像无法在客户端访问的整个目的。
可能的解决方案不会生成图像。我不确定从这里去哪里,所以我希望这里有人有想法。非常感谢!
如果我需要提供其他信息,请告诉我。我觉得这对很多人都有好处。我希望至少 ;-)

最佳答案

对于简单的“将文件发送到浏览器解决方案”,只需向浏览器发送正确的 header (让浏览器知道接下来会发生什么),然后打开图像并将内容打印到 STDOUT。

select(STDOUT); $| = 1;   #unbuffer STDOUT
print "Content-type: image/png\n\n";

open (IMAGE, '<', '/image_outside_webroot/image.png');
print <IMAGE>;
close IMAGE;

一旦成功,请查看 ImageMagick .您可以进行各种即时、有趣的图像操作(调整大小、着色等)

您的 cgi 脚本将包含如下所示的代码:

select(STDOUT); $| = 1;   #unbuffer STDOUT

my $image = Image::Magick->new();
my $x = $image->Read(filename =>"/images_outside_web_root/image1.png");

#some manipulation of the image here

print "Content-type: image/png\n\n";
binmode STDOUT;
$x = $image->Write(.png:-');

您可以在上面链接的网站上阅读更多相关信息。

希望对您有所帮助。

关于Perl CGI 从文件显示图像到浏览器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13851799/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com