Как изменить имя файла, в котором он хранится - PullRequest
0 голосов
/ 22 июля 2011

Я использую скрипт загрузки изображений и изменения размера из чьего-то блога. Он хранит имя файла как 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
   }
?>

Ответы [ 2 ]

1 голос
/ 22 июля 2011

Внутри этого блока вы сохраняете каждое как 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 голосов
/ 22 июля 2011

Имя изображения задается в этой строке:

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

Вам нужно будет определить, как вы хотите назвать имена выходных файлов, и изменить эту строку, чтобы получить желаемый результат.

Если вы можете предоставить более конкретную информацию относительно вашего заявления «я хочу дать уникальные имена», пожалуйста, обновите ваш вопрос.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...