gpt4 book ai didi

perl - 为什么我的图像在使用此 Perl CGI 脚本时会被剪裁?

转载 作者:行者123 更新时间:2023-12-05 01:22:51 26 4
gpt4 key购买 nike

当我尝试在 Perl CGI 脚本中将图像打印到 STDOUT 时,在浏览器中查看时图像被剪裁。

下面是代码:

if ($path =~ m/\.jpe?g$/i)
{
my $length = (stat($path))[7];
$| = 1;
print "Content-type: image/jpg\r\n";
print "Content-length: $length\r\n\r\n";
open(IMAGE,"<$path");
binmode(IMAGE);
binmode(STDOUT);
my ($image, $buff);
read IMAGE, $buff, $length;
syswrite STDOUT, $buff, $length;
close IMAGE;
}

最佳答案

如果你真的想在服务前将整个文件读入内存,使用File::Slurp :

#!/usr/bin/perl

use strict; use warnings;

use CGI::Simple;
use File::Slurp;
use File::stat;

local $| = 1;

my $cgi = CGI::Simple->new;

my $st = stat($path) or die "Cannot stat '$path'";

print $cgi->header(
-type => 'image/jpeg',
-length => $st->size,
);

write_file(\*STDOUT, {binmode => ':raw'},
\ read_file( $path, binmode => ':raw' )
);

但是对于大图,读取整个文件会消耗大量内存。因此,参见 How can I serve an image with a Perl CGI script? .

关于perl - 为什么我的图像在使用此 Perl CGI 脚本时会被剪裁?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2206992/

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