-1

私の現在のプロジェクトでは、PHP と ImageMagick で plupload プラグインを使用しており、正常に動作しています。次のタスクは、アップロードされたファイルの名前を小文字に変更することです。

これらのファイルの名前を変更するには、最初にアップロードした画像を「.temp」拡張子の付いた一時フォルダーに保存し、ファイルをメイン フォルダーに移動して、そこで名前を変更しようとします。関数が初めて実行されたときに、一致する画像がない場合は完全に保存されますが、2回目はうまく機能しません。この関数は、既存のファイル名をチェックし、インクリメント インデックス (image_1.jpg、image_2.jpg など) を使用して繰り返しを格納する必要がありますが、その代わりに、画像 (image.jpg) を上書きするだけです。

ここに私のコードのスニペットがあります:

  $filename = $this->input->post('filename');
  $root  = $_SERVER["DOCUMENT_ROOT"]."/uploads/";
  $source_image  = $root.'temp/'.$filename;

  $image_name = explode(".",$filename);
  rename($source_image, $source_image. '.temp');
  copy($source_image.'.temp', $root.$filename.'.temp');
  unlink($source_image.'.temp');

  $exp_temp_img_slash = explode(".",$filename);
  $rename_img_a = strtolower($exp_temp_img_slash[0]);
  $rename_img_b = $exp_temp_img_slash[1];

  if (file_exists($root.$rename_img_a .".".$rename_img_b)) {
      $count=1;

      while (file_exists($root. $rename_img_a ."_".$count. ".".$rename_img_b)) {
          $count++;
           $rename_img = strtolower($rename_img_a . '_' . $count . ".".$rename_img_b);
      }

      $renamed_image = $_SERVER["DOCUMENT_ROOT"]."/uploads/".$rename_img;
      rename($root.$filename.".temp",$renamed_image);
   } else {
       $rename_img = strtolower($rename_img_a .".".$rename_img_b);
       $renamed_image = $_SERVER["DOCUMENT_ROOT"]."/uploads/".$rename_img;
       rename($root.$filename.".temp",$renamed_image);
   }

どんな助けでも感謝します、ありがとう。

4

1 に答える 1

0
shell_exec($imagemagick_folder."convert ".$from . $fileName." -resize ".$width."x".$height." -quality 95 ".$to.$fileName);

$imagemagick_folder は、imagemagick がインストールされているフォルダーです (例: C:\imagemagick)。

$from と $to は、開始フォルダーと宛先フォルダーです

画像のサイズを変更する場合、$width と $height はオプションです

于 2012-04-27T08:10:09.890 に答える