2011-07-22 61 views
0

我正在使用圖片上傳和調整某人博客的腳本。它存儲文件的名稱爲resize.jpg。但是我想給它們唯一的名稱,因爲數據將會在數據庫中存儲......我在使用函數時很不好,請引導我。如何更改存儲文件的名稱

<?php 
    class SimpleImage { 

    var $image; 
    var $image_type; 

    function load($filename) { 

     $image_info = getimagesize($filename); 
     $this->image_type = $image_info[2]; 
     if($this->image_type == IMAGETYPE_JPEG) { 

     $this->image = imagecreatefromjpeg($filename); 
     } elseif($this->image_type == IMAGETYPE_GIF) { 

     $this->image = imagecreatefromgif($filename); 
     } elseif($this->image_type == IMAGETYPE_PNG) { 

     $this->image = imagecreatefrompng($filename); 
     } 
    } 
      function save($filename, $image_type=IMAGETYPE_JPEG, $compression=75,  $permissions=null) { 

     if($image_type == IMAGETYPE_JPEG) { 
     imagejpeg($this->image,$filename,$compression); 
     } elseif($image_type == IMAGETYPE_GIF) { 

     imagegif($this->image,$filename); 
     } elseif($image_type == IMAGETYPE_PNG) { 

     imagepng($this->image,$filename); 
     } 
     if($permissions != null) { 

     chmod($filename,$permissions); 
     } 
    } 
    function output($image_type=IMAGETYPE_JPEG) { 

     if($image_type == IMAGETYPE_JPEG) { 
     imagejpeg($this->image); 
     } elseif($image_type == IMAGETYPE_GIF) { 

     imagegif($this->image); 
     } elseif($image_type == IMAGETYPE_PNG) { 

     imagepng($this->image); 
     } 
    } 
     function getWidth() { 

     return imagesx($this->image); 
     } 
     function getHeight() { 

     return imagesy($this->image); 
     } 
     function resizeToHeight($height) { 

     $ratio = $height/$this->getHeight(); 
     $width = $this->getWidth() * $ratio; 
     $this->resize($width,$height); 
    } 

    function resizeToWidth($width) { 
     $ratio = $width/$this->getWidth(); 
     $height = $this->getheight() * $ratio; 
     $this->resize($width,$height); 
    } 

    function scale($scale) { 
     $width = $this->getWidth() * $scale/100; 
     $height = $this->getheight() * $scale/100; 
     $this->resize($width,$height); 
    } 

    function resize($width,$height) { 
     $new_image = imagecreatetruecolor($width, $height); 
     imagecopyresampled($new_image, $this->image, 0, 0, 0, 0, $width, $height, $this->getWidth(), $this->getHeight()); 
     $this->image = $new_image; 
    }  

} 
?> 
<?php 
    if(isset($_POST['submit'])) { 
     include('SimpleImage.php'); 
     $image = new SimpleImage(); 
     $image->load($_FILES['uploaded_image']['tmp_name']); 
     $image->resizeToWidth(300); 
     $image->resizeToHeight(200); 
     $image->save('images/resize.jpg'); 
     //$image->output(); 
    } else { 
?> <form action="" method="post" enctype="multipart/form-data"> 
     <input type="file" name="uploaded_image" /> 
     <input type="submit" name="submit" value="Upload" /> 
    </form><?php 
    } 
?> 

回答

1

這裏面塊,你節約每一個爲resize.jpg

$image->resizeToWidth(300); 
    $image->resizeToHeight(200); 
    $image->save('images/resize.jpg'); 

您可以生成一個唯一的名稱與uniqid()還可以選擇添加一個前綴到它像img_。您的文件名將如下所示:

'img_4e297753130db.jpg' 

首先生成一個文件名,保存在一個變量中。

$prefix = "img_" 
$new_filename = uniqid($prefix) . ".jpg"; 

// Do your other processing 
// ... 
$image->resizeToWidth(300); 
$image->resizeToHeight(200); 

// Save with the new filename 
// Note change to double quotes from single... 
$image->save("images/$new_filename"); 

後來,當你準備好文件名存儲在數據庫中,它仍然提供$new_filename

+0

謝謝你這麼muchhh ........... – Birju

0

圖像名稱被設置在這一行:

$image->save('images/resize.jpg'); 

您需要確定要如何命名輸出文件,並修改該行以產生所需的輸出。

如果您可以提供關於您的陳述「我想給出獨特名稱」的更多具體細節,請更新您的問題。

相關問題