2012-04-27 41 views
-1

在我目前的项目我使用PHP和ImageMagick的,并以其优良的工作plupload插件上传的文件 - 现在我的下一个任务是太小写重命名上传的文件。重命名使用ImageMagick

要与“.temp”扩展名重命名这些文件我第一次上传的图片保存在临时文件夹,比我的文件移动到主文件夹,并在那里我试图做一个重命名。当函数第一次执行时,如果没有匹配的图像,那么它将完美地存储它,但第二次通过它不会工作。该函数应该检查现有的文件名和应存储的重复和递增指标,即作为image_1.jpg,image_2.jpg等,但istead这样做,它只是覆盖图像即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); 
    } 

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

回答

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

$ imagemagick_folder是安装ImageMagick中的文件夹(例如C:\ ImageMagick的)

$从和$到是开始和目标文件夹

$宽度和$高度如果您想调整图像大小,则为可选