2013-02-27 137 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