gorbunovart
@gorbunovart
veb4ik

Обрезать изображение на php при загрузке?

Добрый вечер! Сейчас у меня есть этот скрипт, он загружает изображение в определенную папку на сайте, делает проверку на формат файла и размер, дает уникально имя и в конце заносит в строку в таблице бд. Мне нужно сделать так, что бы в не зависимости от того, с каким разрешением человек выбрал изображение, оно с начало обрезалось до 300x300px по центру, а потом уже загружалось и заносилось в бд. Буду благодарен коду с комментариями и объяснениями. Спасибо!
<?php
$uploaddir = '../img/ticket/';
// это папка, в которую будет загружаться картинка
$apend=date('YmdHis').rand(100,1000).'.jpg';
// это имя, которое будет присвоенно изображению
$uploadfile = "$uploaddir$apend";
//в переменную $uploadfile будет входить папка и имя изображения


// В данной строке самое важное - проверяем загружается ли изображение (а может вредоносный код?)
// И проходит ли изображение по весу. В нашем случае до 512 Кб
if(($_FILES['upload_image']['type'] == 'image/gif' || $_FILES['upload_image']['type'] == 'image/jpeg' || $_FILES['upload_image']['type'] == 'image/jpg' || $_FILES['upload_image']['type'] == 'image/png'))
{
// Указываем максимальный вес загружаемого файла. Сейчас до 512 Кб
  if (move_uploaded_file($_FILES['upload_image']['tmp_name'], $uploadfile))
   {
   //Здесь идет процесс загрузки изображения
   $size = getimagesize($uploadfile);
   
   $new_img = mysql_query ("UPDATE table_ticket SET image='$apend' WHERE ticket_id='$id'",$link);
   // с помощью этой функции мы можем получить размер пикселей изображения
     if ($size[0] < 2361 && $size[1]<2276)
     {
     // если размер изображения не более 500 пикселей по ширине и не более 1500 по  высоте
     echo "Файл загружен. Путь к файлу: <b>http:/yoursite.ru/".$uploadfile."</b>";
     } else {
     echo "Загружаемое изображение превышает допустимые нормы (ширина не более - 2360; высота не более 2275)";
     unlink($uploadfile);
     // удаление файла
     }
   } else {
   echo "Файл не загружен, вернитеcь и попробуйте еще раз";
   }
} else {
echo "Ошибка загрузки изображени! Либо большой размер, либо не выбран файл!";
}
?>
  • Вопрос задан
  • 2249 просмотров
Пригласить эксперта
Ответы на вопрос 4
LenovoId
@LenovoId
svg, css,js
$infoimg = getimagesize($_FILES['userfile']['tmp_name']);
if ($imageinfo[0] > 100 || $imageinfo[1] > 100) {
    // отказ от картинки или ресайз
} else {
    // продолжаем
}

там всё ясно надеюсь ? php.net
Ответ написан
@springimport
Комментировать
советую использовать расширениe Imagick и его метод Imagick::resizeImage. Это разширение довольно богато на функционал и все, что вам нужно в плане работы с изображениями вы можете сделать с его помощью
Ответ написан
Комментировать
@Etmac
image.intervention.io - думаю в самый раз, интуитивно понятен и многофункционален.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы