簡體   English   中英

從PHP中的Imagick圖像輸出原始圖像

[英]Output raw image from Imagick image in PHP

我正在使用Imagick lib對原始圖像進行一些修改。 然后,我想不保存直接將其輸出到瀏覽器。 有沒有辦法做到這一點?

我嘗試使用Imagick::writeImage('STDOUT') (空輸出)和'php:// stdout',錯誤為“無法寫入文件”。

有任何想法嗎? :)

您只需要回顯imagick對象:

$img = new Imagick($file);
header('Content-Type: image/'.$img->getImageFormat());
echo $img;

我相信Schneck的意思是:

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版本支持的話,這種方法似乎更快。

在您拒絕投票之前,我將其添加為答案而不是發表評論的原因是我沒有足夠的聲譽發表評論。 希望沒事。 只是想把它拿出來,以防萬一有人需要它。

如果您正在使用HHVM,則僅嘗試回顯Imagick對象就會引發致命異常,因此您需要調用getimageblob();。

$imagick = new Imagick('my-image.jpg');
header('Content-Type: image/' . $imagick->getImageFormat());
echo $imagick->getimageblob();

您是否嘗試過Imagick::writeImageFile("php://stdout") (未經測試)?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM