2012-10-20 75 views
2

此問題已被詢問(請參閱下面的鏈接),但沒有答案的工作。所以我有這個ImageMagick腳本,我用它來着色PNG,它工作的很好,但問題是它實際上在服務器上生成文件。我想要的就是GD在圖像處理方面做了什麼,然後在不實際保存圖像的情況下顯示它。PHP:顯示ImageMagick圖像而不保存到服務器,如GD

這是我用於着色圖像的ImageMagick代碼。此代碼執行轉換並在服務器上生成最終映像的額外文件。

<?php 

$source = "src.png"; 
$final = "FINAL.png"; 
$color = "#00FF00"; 

exec("convert $source -threshold 100% +level-colors '$color', $final"); 

?> 

這裏是一個GD示例代碼直接做圖像處理和顯示的最終圖像不保存額外的圖像到服務器:

<?php 
header('Content-Type: image/png'); 

$source = "src.png"; 

$im = imagecreatefrompng($source); 
imagefilter($im, IMG_FILTER_GRAYSCALE); 
imagepng($im); 
imagedestroy($im); 

?> 

所以基本上我想要的是在完成圖像處理第一個例子,但沒有保存額外的圖像並在瀏覽器中顯示輸出。

鏈接搜索:

的解決方案中沒有工作: Generate images with ImageMagick without saving to file but still display them on website

我如何轉換我的ImageMagick的代碼iMagick?PHP-Imagemagick image display

+0

您可以嘗試'-'作爲輸出文件名。許多命令行應用程序將其用作簡單打印輸出的信號,而不是保存到文件。但請記住...... cli應用程序不知道它們是通過基於Web的腳本來調用的。將圖像的原始二進制內容輸出到控制檯不會神奇地使該圖像可見。 –

+0

所以'-'確實如你所說,但是圖像的存儲位置在哪裏,以便我可以顯示它? –

+0

它將被轉儲到imagick的標準輸出,這將返回到PHP。所以切換到[passthru()](http://php.net/manual/en/function.passthru.php),而不是exec() –

回答

1

一個使用你的代碼爲他人學習的直接例子。 我在Godaddy的共享Linux服務器上使用了相同的方法。

<?php 
    $source = "src.png"; 
    $color = "#00FF00"; 

    $cmd = "convert $source -threshold 100% +level-colors '$color',". 
    " -unsharp 0.2x0.6+1.0 -quality 50 JPG:-"; 

    header("Content-type: image/jpeg"); 
    passthru($cmd, $retval); 
    exit(); 
?> 
  • 注意: - 你確定你使用的是 「-threshold 100%+級別的顏色 '$色',」 是否正確?閾值100%會將圖像推到黑色。然後+水平顏色'#00FF00',將只是一個堅實的綠色圖像。我假設你已經簡化了這個演示的代碼。

  • 注意: - 「+級別的顏色 '$彩'」,不會對Godaddy的服務器上運行。但它在我的家庭服務器上正常工作。 Godaddy的服務器上可能安裝了過時的ImageMagick版本。

相關問題