使用ImageMagick重命名上传的文件

时间:2012-04-27 08:02:50

标签: php

在我目前的项目中,我正在使用带有PHP和ImageMagick的plupload插件,并且工作正常 - 现在我的下一个任务是将小写的上传文件重命名。

要重命名这些文件,我首先将上传的图像存储在扩展名为“.temp”的临时文件夹中,而不是将文件移动到主文件夹,然后尝试重命名。第一次执行该函数时,如果没有匹配的图像,那么它将完美地存储它,但第二次通过它也不起作用。该函数应该检查现有的文件名,并且应该使用递增索引存储重复,即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);
   }

任何帮助将不胜感激,谢谢。

1 个答案:

答案 0 :(得分: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是可选的