За последние 24 часа нас посетили 20024 программиста и 1582 робота. Сейчас ищут 1863 программиста ...

Загрузка аватара и изменение размеров изображения

Тема в разделе "Сделайте за меня", создана пользователем Фарход, 5 мар 2017.

  1. Фарход

    Фарход Новичок

    С нами с:
    20 янв 2017
    Сообщения:
    18
    Симпатии:
    1
    Адрес:
    Узбекистан
    Здравствуйте, у меня такая проблема делаю загрузку аватара на сайте, для начала нашел простой код где просто картинка загружается на сервер, вот код
    PHP:
    1. require_once '../_scripts/database.php';
    2. $link = db_connect();
    3. $id = (int)$_POST['id'];// user id
    4. if (isset($_POST['submit'])) {
    5.     $file = $_FILES['file'];
    6.    
    7.     $fileName = $file['name'];
    8.     $fileTmpName = $file['tmp_name'];
    9.     $fileSize = $file['size'];
    10.     $fileError = $file['error'];
    11.     $fileType = $file['type'];
    12.  
    13.     $fileExt = explode('.', $fileName);
    14.     $fileActualExt = strtolower(end($fileExt));
    15.  
    16.     $allowed = array('jpg');
    17.  
    18.     if (in_array($fileActualExt, $allowed)) {
    19.         if ($fileError === 0) {
    20.             if ($fileSize < 1048576) {
    21.                 $fileNameNew = $id.".".$fileActualExt;
    22.                 $fileDestination = '../_images/avatar/'.$fileNameNew;
    23.                 move_uploaded_file($fileTmpName, $fileDestination);
    24.                 $sql = "UPDATE users SET avatar='$id' WHERE id='$id'";
    25.                 $result = mysqli_query($link, $sql);
    26.                 header('Location: /profil');
    27.             } else {
    28.                 echo "Your file is too big!";
    29.             }
    30.         } else {
    31.             echo "There was an error uploading your file!";
    32.         }
    33.     } else {
    34.         echo "You cannot upload files of this type!";
    35.     }
    36. }
    При загрузке картинок с разными пропорциями, все это смотрится не красиво, надо было сделать так что бы картинка обрезалось, и стала квадратной форма, я нашел такой код, но не знаю как его вписать в код указанный выше вот сам код
    PHP:
    1. public function igImagePrepare($img,$name){
    2.     $dir = 'my-images/';
    3.     $img_name = $name.'-'.uniqid().'.jpg';
    4.  
    5.     //Your Image
    6.     $imgSrc = $img;
    7.  
    8.     //getting the image dimensions
    9.     list($width, $height) = getimagesize($imgSrc);
    10.  
    11.     //saving the image into memory (for manipulation with GD Library)
    12.     $myImage = imagecreatefromjpeg($imgSrc);
    13.  
    14.     $square_size = 100;
    15.  
    16.     $width = imagesx( $myImage );
    17.     $height = imagesy( $myImage );
    18.  
    19.  
    20.                 //set dimensions
    21.                 if($width> $height) {
    22.                         $width_t=$square_size;
    23.                         //respect the ratio
    24.                         $height_t=round($height/$width*$square_size);
    25.                         //set the offset
    26.                         $off_y=ceil(($width_t-$height_t)/2);
    27.                         $off_x=0;
    28.                 } elseif($height> $width) {
    29.                         $height_t=$square_size;
    30.                         $width_t=round($width/$height*$square_size);
    31.                         $off_x=ceil(($height_t-$width_t)/2);
    32.                         $off_y=0;
    33.                 }
    34.                 else {
    35.                         $width_t=$height_t=$square_size;
    36.                         $off_x=$off_y=0;
    37.                 }
    38.  
    39.  
    40.    /* Create the New Image */
    41.     $new = imagecreatetruecolor( $square_size , $square_size );
    42.    /* Transcribe the Source Image into the New (Square) Image */
    43.     $bg = imagecolorallocate ( $new, 255, 255, 255 );
    44.     imagefill ( $new, 0, 0, $bg );
    45.     imagecopyresampled( $new , $myImage , $off_x, $off_y, 0, 0, $width_t, $height_t, $width, $height );
    46.  
    47.     //final output
    48.     imagejpeg($new, $dir.$img_name);
    49.  
    50.     return $dir.$img_name;
    51.   }
    Помогите пожалуйста решить это проблему!!!
     
  2. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    Может перенести тему в раздел "сделайте за меня"?
     
  3. Фарход

    Фарход Новичок

    С нами с:
    20 янв 2017
    Сообщения:
    18
    Симпатии:
    1
    Адрес:
    Узбекистан
    а как её перенести
     
  4. ArsNet

    ArsNet Новичок

    С нами с:
    24 май 2016
    Сообщения:
    288
    Симпатии:
    24
    Адрес:
    Владивосток
    Может задать параметры высоты и ширины при выводе картинок?
     
  5. Фарход

    Фарход Новичок

    С нами с:
    20 янв 2017
    Сообщения:
    18
    Симпатии:
    1
    Адрес:
    Узбекистан
    нет с выводом все хорошо, вот только размер картинок большой
     
  6. ArsNet

    ArsNet Новичок

    С нами с:
    24 май 2016
    Сообщения:
    288
    Симпатии:
    24
    Адрес:
    Владивосток
    Ну значит проверяй размер картинок при загрузке и обрабатывай ее как тебе надо.
     
  7. Фарход

    Фарход Новичок

    С нами с:
    20 янв 2017
    Сообщения:
    18
    Симпатии:
    1
    Адрес:
    Узбекистан
    Вот мне надо эти картинки уменьшить до определенного размера (100х100), но не знаю как это сделать
     
  8. ArsNet

    ArsNet Новичок

    С нами с:
    24 май 2016
    Сообщения:
    288
    Симпатии:
    24
    Адрес:
    Владивосток