2016-07-29 2 views
2

imagecreatefromstring()で画像のソースに変換できる文字列画像(png)があります。 私はimagepng()で圧縮することができますが、私はさらにOptipngを使用したいと思います。 Optipngはファイルを入力として受け取ります。メモリ内の画像上でPHPの外部プログラムを使用する

私はどのようにメモリ内のイメージのPHPでOptipngや他のコマンドラインツールを使用できますか?最初にイメージをディスクに書き込むことはオプションではありません。

+1

、それは(すなわち、適切な技術なしで、2つのプロセスがそのメモリを共有することはできません。)両面でサポートされていなければなり:以下 コードは、あなたは一時ファイルにデータを保存することができます。 「共有メモリ」についてGoogleで詳しく知ることができます。 –

答えて

1

一時的な場所に保存し、必要な操作を行い、必要に応じて文字列に戻す必要があります。唯一の共有メモリを

$tmp = tempnam(sys_get_temp_dir(), 'tmp_img') . '.png'; 
    file_put_contents($tmp, $data); 

    $command = "optipng -o7 ${tmp}>/dev/null; echo $?"; 
    $retCode = shell_exec($command); 
    if ($retCode == 0) { 
     $data = file_get_contents($tmp); 
    } else { 
     die("error"); 
    } 
+1

彼は明示的に "ディスクへの書き込みはオプションではありません"と言っています... –

関連する問題