0
    $cmd = 'jpegtran a.jpg > b.jpg';
    system($cmd);
    $newsize = filesize('b.jpg');
    if($newsize != 0) {
       copy('b.jpg','a.jpg');
    }

大量の画像に対してjpegtranを実行し、コマンドが成功した場合にのみ、出力を元のファイルにコピーしたいと考えています。

上記のphpコードを実行すると、特定の画像で「jpgファイルの途中終了」「入力ファイルが空」などのエラーが発生します。

これらのエラーをキャプチャして、コード内で適切に処理するにはどうすればよいですか?

4

1 に答える 1

1

エラー時にどのようjpegtranに返されるかはわかりませんが、通常、エラー時のリターン コードは 0 とは異なります。

もしそうなら、代わりにhttp://php.net/manual/en/function.exec.phpを使用して、次のように return_var でexec()結果を取得できます。system()jpegtran

exec('jpegtran a.jpg > b.jpg', $result, $return_var);

if( $return_var ) {
  // Error log here
}

system()編集: return_var も忘れていました。したがって、同じことを次の方法で実現できますsystem('jpegtran a.jpg > b.jpg', $return_var);

于 2012-06-27T08:00:52.373 に答える