0

あるディレクトリから別のディレクトリにファイルをコピーする cron ジョブを作成しています。cron ジョブは正常に機能し、ファイルをインポート ディレクトリにコピーします。インポートディレクトリの構造はこのようになっています。

import
      folder1
          pdf_file1
      folder2
          pdf_file2

フォルダーにコピーされる各 pdf ファイルのサムネイル画像を作成しようとしています。ImageMagik をインストールし、サムネイル画像を作成するための php コードは次のとおりです。

 if ($preview != "") {
    $copy_res = ftp_get("files/upload/" . $ftp_upload["path"] . "/" . $preview, "files/import/" . $ftp_upload["preview"] . "/" . $preview);
    $md5_checksum = md5("files/import/" . $ftp_upload["path"] . "/" . $preview);
 } else {
         //$pdf_file = 'files/import/folder1/pdf_file1';
         $pdf_file = 'files/import/' . $ftp_upload["path"]."/".$filename_new;
         if (file_exists($pdf_file)){
             echo 'I am here';
             exec("convert -density 300 " . $pdf_file . "[0]" . $filename_new . ".jpg");
         }
 }

コードを実行すると、else ステートメントになり、行がエコーされますが、exec コマンドは実行されません。ナビゲートしたコマンドプロンプトからの変換コマンドを確認しました

 C:\wamp\www\project\files\import\folder1 

そして、このコマンドを実行します

 exec("convert -density 300  test.pdf[0]  test.jpg");

コマンドプロンプトからは機能しましたが、私のコードでは機能していません。パスに問題はありますか? ファイルのサムネイルを作成しようとすると、ファイルはすでにコピーされているためです。

ImageMagik は次の場所にインストールされます。

 C:\Program Files(x86)\ImageMagik

私が間違っていることは何ですか?PDFのサムネイル画像を作成する他の高速な方法はありますか?

前もって感謝します

4

2 に答える 2

1

Imagemagick に送信する情報を表示できるように、コードを exec() から分離するコードを記述します。exec() の外でファイル名を設定することも試してみます

$input = $pdf_file . "[0]";
$output = $filename_new . ".jpg"
$cmd = " -density 300 $input -thumbnail 200x300 $output ";
// echo $cmd."<br>";
exec("convert $cmd");

サイズ変更を追加しましたが、画像の縦横比は維持されます。正確なサイズが必要な場合は、画像をトリミングするか、色で埋めることができます。

于 2012-05-04T14:45:39.813 に答える
0

pdfファイルへのパスと画像ファイルの新しい名前を区切るスペースが不足しているようです。

exec("convert -density 300 " . $pdf_file . "[0]" . $filename_new . ".jpg");

次のようにする必要があります。

exec("convert -density 300 " . $pdf_file . "[0] " . $filename_new . ".jpg");
-----------------------------------------------^
于 2012-05-04T13:30:51.100 に答える