2011-07-22 17 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

このブロックの中に、あなたはあなたがuniqid()で一意の名前を生成し、必要に応じてimg_のようにその上にプレフィックスを追加することができます一人一

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

を保存しています。ファイル名は次のようになります。

'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"); 

その後、それは

+0

$new_filenameではまだ利用可能ですが...........非常にmuchhhので、ありがとう – Birju

0

イメージ名は、この行に設定されている:

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

あなたは、出力ファイルに名前を付けたい方法を決定する必要があり、所望の出力を生成するためにその行を変更します。

「あなたは一意の名前を付けたいです」という記述についてより具体的な情報を提供できる場合は、質問を更新してください。

関連する問題