M
M
Mahay2016-03-08 11:39:43
PHP
Mahay, 2016-03-08 11:39:43

How to resize images in php with name change and record in mysql?

Hello! Faced such a problem, I thought about writing a resize of uploaded images to the server. There were no special problems with loading and resizing one image, it turned out to write:
<input name="cover" type="file" />

<?php	
        if (empty($_FILES['cover']['name']))
  {
    $cover = "covers/no-cover.jpg"; 
  }
  else 
  {
    $path_to_90_directory = '../covers/';//папка
    $type_cover = 'covers/';
    if(preg_match('/[.](JPG)|(jpg)|(gif)|(GIF)|(png)|(PNG)$/',$_FILES['cover']['name']))//проверка формата 
    {	
      $filename = $_FILES['cover']['name'];
      $source = $_FILES['cover']['tmp_name'];	
      $target = $path_to_90_directory . $filename;
      move_uploaded_file($source, $target);//загрузка оригинала в папку
      
      if(preg_match('/[.](GIF)|(gif)$/', $filename)) 
      {$src = imagecreatefromgif($path_to_90_directory.$filename);}
    
      if(preg_match('/[.](PNG)|(png)$/', $filename)) 
      {$src = imagecreatefrompng($path_to_90_directory.$filename);}
    
      if(preg_match('/[.](JPG)|(jpg)|(jpeg)|(JPEG)$/', $filename)) 
      {$src = imagecreatefromjpeg($path_to_90_directory.$filename);}
    
    
      $w = 1000;  // задаем нужную шириину
      $w_src = imagesx($src); 
      $h_src = imagesy($src);
      $ratio = $w_src/$w; 
      $w_dest = round($w_src/$ratio); 
      $h_dest = round($h_src/$ratio); 
      $dest = imagecreatetruecolor($w_dest,$h_dest); 
      imagecopyresized($dest, $src, 0, 0, 0, 0, $w_dest, $h_dest, $w_src, $h_src); 
     
      $date=time(); //вычисляем время в настоящий момент.
      imagejpeg($dest, $path_to_90_directory.$date.".jpg");//сохраняем изображение формата jpg в нужную папку
      $cover = $type_cover.$date.".jpg";//заносим в переменную путь до изображения.
      $delfull = $path_to_90_directory.$filename; 
      unlink ($delfull);//удаляем оригинал загруженного изображения
    }
    else 
        {
      exit ("Изображение должно быть в формате JPG,GIF или PNG"); 
    }
  }
  echo $cover;
?>

But then I started trying to write a resize for mass uploading images with a change in the file name and writing to the database, but I got into a stupor - I can’t figure out how to force resize the photo stream. (
<input name="max_file_size" type="hidden" value="5000000" /><!-- макс. размер -->
<input name='file[]' type='file' multiple='true' />

$arr=array();
   
  //ширина и высота в пикселях
  $pic_weight = 10000;
  $pic_height = 10000;
  
  if (isset($_FILES))
    {
      //пролистываем весь массив изображений по одному $_FILES['file']['name'] as $k=>$v
      foreach ($_FILES['file']['name'] as $k=>$v)
      {
        //директория загрузки
        $uploaddir = "../images/";
        $url_files = "images/";
        
        //новое имя изображения
        $apend=date('YmdHis').rand(100,1000).'.png';
        //путь к новому изображению
        $uploadfile = "$uploaddir$apend";
        $uploadss = "$url_files";
        
        //Проверка расширений загружаемых изображений
        if($_FILES['file']['type'][$k] == "image/gif" || $_FILES['file']['type'][$k] == "image/png" ||
        $_FILES['file']['type'][$k] == "image/jpg" || $_FILES['file']['type'][$k] == "image/jpeg")
        {
          //черный список типов файлов
          $blacklist = array(".php", ".phtml", ".php3", ".php4");
          foreach ($blacklist as $item)
          {
            if(preg_match("/$item\$/i", $_FILES['file']['name'][$k]))
            {
              echo "Нельзя загружать скрипты.";
              exit;
            }
          }
          //перемещаем файл из временного хранилища
          if (move_uploaded_file($_FILES['file']['tmp_name'][$k], $uploadfile))
          {
            
            //получаем размеры файла
            $size = getimagesize($uploadfile);
                              
            //проверяем размеры файла, если они нам подходят, то оставляем файл
            if ($size[0] < $pic_weight && $size[1] < $pic_height)
            {
              $arr[$apend] = "$uploadss$apend";//Запишем значение в массив с ключом по имени
              echo "";
            }
            //если размеры файла нам не подходят, то удаляем файл unlink($uploadfile);
            else
            {
              echo "Размер пикселей превышает допустимые нормы.";
              unlink($uploadfile);
            }
          }
          else
          echo "Файл не загружен, вернитесь и попробуйте еще раз.";
        }
        else
        echo "Можно загружать только изображения в форматах jpg, jpeg, gif и png";
      }

      $url = mysql_real_escape_string(implode(',',$arr));
      
      echo $url;
    }

Answer the question

In order to leave comments, you need to log in

2 answer(s)
S
Silm, 2016-03-08
@Mahay

O▃O
95% of the code in the furnace
image.intervention.io/getting_started/introduction
PS

  • Why does the regular expression find the extension from the name, if 1 in the name may be the wrong extension, 2 there is a built-in function for determining the file type.
  • Have you tried writing functions?
  • date('YmdHis').rand(100,1000)what?
  • $blacklist = array(".php", ".phtml", ".php3", ".php4");
    and if the extension is jpg, but in a php file? And files with other extensions, but not images, suit you?
  • php.net/function.mysql_real_escape_string read what is written in the red rectangle
  • ...

G
global Error, 2016-03-09
@Mowsar

In general, this topic with images in php is complete ... according to the normal crop, you need to search for it manually or on a JS script and then upload it to the server ... why should the server suffer with pictures ... =) maybe I'm wrong.

Didn't find what you were looking for?

Ask your question

Ask a Question

731 491 924 answers to any question