首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >用PHP从Imagick图像中输出原始图像

用PHP从Imagick图像中输出原始图像
EN

Stack Overflow用户
提问于 2011-02-08 18:49:34
回答 4查看 20.8K关注 0票数 17

我正在使用Imagick lib对原始图像进行一些修改。然后我想把它直接输出到浏览器而不保存。有没有办法做到这一点?

我尝试使用Imagick::writeImage('STDOUT') (空输出)和'php://stdout‘,但出现错误"Unable to write to file“。

有什么想法吗?:)

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-02-08 19:04:08

你只需要回显你的imagick对象:

代码语言:javascript
运行
复制
$img = new Imagick($file);
header('Content-Type: image/'.$img->getImageFormat());
echo $img;
票数 28
EN

Stack Overflow用户

发布于 2013-09-10 02:10:17

我相信施内克的意思是:

代码语言:javascript
运行
复制
header('Content-Type: '.$mime_type);
$fp = fopen('php://stdout', 'w+');
$image->writeImageFile($fp);
fclose($fp);

这可能会导致问题,特别是在多页文件中,因此您可能应该使用:

代码语言:javascript
运行
复制
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+):

代码语言:javascript
运行
复制
$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版本支持此方法,则此方法似乎更快。

在你投反对票之前,我添加这篇文章作为答案而不是评论的原因是我没有足够的声誉来评论。希望这没问题。只是想把这个拿出来以防万一有人需要。

票数 3
EN

Stack Overflow用户

发布于 2015-09-17 00:01:33

如果你使用的是HHVM,如果你只是尝试回显Imagick对象,它会抛出一个致命的异常,所以你需要调用getimageblob();

代码语言:javascript
运行
复制
$imagick = new Imagick('my-image.jpg');
header('Content-Type: image/' . $imagick->getImageFormat());
echo $imagick->getimageblob();
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4932100

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档