我正在使用Imagick lib对原始图像进行一些修改。然后我想把它直接输出到浏览器而不保存。有没有办法做到这一点?
我尝试使用Imagick::writeImage('STDOUT') (空输出)和'php://stdout‘,但出现错误"Unable to write to file“。
有什么想法吗?:)
发布于 2011-02-08 19:04:08
你只需要回显你的imagick对象:
$img = new Imagick($file);
header('Content-Type: image/'.$img->getImageFormat());
echo $img;发布于 2013-09-10 02:10:17
我相信施内克的意思是:
header('Content-Type: '.$mime_type);
$fp = fopen('php://stdout', 'w+');
$image->writeImageFile($fp);
fclose($fp);这可能会导致问题,特别是在多页文件中,因此您可能应该使用:
ob_start();
$fp = fopen('php://output', 'w+');
$image->writeimagefile($fp); // or writeImagesFile for multipage PDF
fclose($fp);
$out = ob_get_clean();
header('Content-Length: '.strlen($out));
echo $out;这是经过测试的,并且工作正常。
我意识到这是一个古老的问题。我张贴这篇文章的原因是,如果你想写一个多页的PDF,这是一个解决方案,因为Nabab的解决方案只适用于单个图像。
您还可以使用(PHP 5.1.0+):
$fp = fopen('php://temp', 'r+');
$image->writeimagesfile($fp);
rewind($fp);
$out = stream_get_contents($fp);
header('Content-Length: '.strlen($out));
fclose($fp);
echo $out;如果您的PHP版本支持此方法,则此方法似乎更快。
在你投反对票之前,我添加这篇文章作为答案而不是评论的原因是我没有足够的声誉来评论。希望这没问题。只是想把这个拿出来以防万一有人需要。
发布于 2015-09-17 00:01:33
如果你使用的是HHVM,如果你只是尝试回显Imagick对象,它会抛出一个致命的异常,所以你需要调用getimageblob();
$imagick = new Imagick('my-image.jpg');
header('Content-Type: image/' . $imagick->getImageFormat());
echo $imagick->getimageblob();https://stackoverflow.com/questions/4932100
复制相似问题