2013-02-27 64 views
1

是否有可能像下面一樣將二進制數據交給system()將二進制數據傳遞到PHP系統()命令

$contents = file_get_contents("http://somesite.com/image.jpg"); 
$out = system("{$contents} | convert - -fuzz 10% -trim jpeg:-"); 

當我去到終端,並執行cat filename | convert - -fuzz 10% -trim jpeg:-返回二進制數據到STDOUT ......但是當我echo()print_r()上面的數據,它總是空的。

+0

嘗試'passthru',而不是系統.. – prodigitalson 2013-02-27 04:10:59

+0

'passthru'返回'void'和自動回顯給瀏覽器。不要認爲這是正確的。 – 2013-02-27 04:11:46

+0

啊,你是啊,我記得提及使用它來處理二進制數據......應該在提到它之前重新閱讀文檔:-) – prodigitalson 2013-02-27 04:13:01

回答

1
  1. 使用的base64:

    system('echo ' . base64_encode($contents) . " | base64 -d | convert - -fuzz 10% -trim jpeg:-"); 
    
  2. 你可能問一個問題分離爲

+0

這就是爲什麼我<3 StackOverflow。絕對不會想到這樣做。謝謝! 7分鐘接受。乾杯。 – 2013-02-27 04:15:07

+0

@Jordan Arseno:從現在開始,我肯定它會成爲你的觸發器:如果你有一個二進制數據,而底層的命令不接受二進制文本數據,那麼就有一個標誌來考慮序列化 – zerkms 2013-02-27 04:16:53

+0

Can你多說一點?非常感謝! – 2013-02-27 06:30:12