imagecreatefromstring()
で画像のソースに変換できる文字列画像(png)があります。 私はimagepng()
で圧縮することができますが、私はさらにOptipngを使用したいと思います。 Optipngはファイルを入力として受け取ります。メモリ内の画像上でPHPの外部プログラムを使用する
私はどのようにメモリ内のイメージのPHPでOptipngや他のコマンドラインツールを使用できますか?最初にイメージをディスクに書き込むことはオプションではありません。
imagecreatefromstring()
で画像のソースに変換できる文字列画像(png)があります。 私はimagepng()
で圧縮することができますが、私はさらにOptipngを使用したいと思います。 Optipngはファイルを入力として受け取ります。メモリ内の画像上でPHPの外部プログラムを使用する
私はどのようにメモリ内のイメージのPHPでOptipngや他のコマンドラインツールを使用できますか?最初にイメージをディスクに書き込むことはオプションではありません。
一時的な場所に保存し、必要な操作を行い、必要に応じて文字列に戻す必要があります。唯一の共有メモリを
$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");
}
彼は明示的に "ディスクへの書き込みはオプションではありません"と言っています... –
、それは(すなわち、適切な技術なしで、2つのプロセスがそのメモリを共有することはできません。)両面でサポートされていなければなり:以下 コードは、あなたは一時ファイルにデータを保存することができます。 「共有メモリ」についてGoogleで詳しく知ることができます。 –