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

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

$allowed_filetypes = array('.jpg','.gif','.bmp','.png','.jpeg','.JPG','.PNG','.BIF','.GIF','.JPEG'); // These will be the types of file that will pass the validation.
$max_filesize = 524288; //  filesize in BYTES (currently 0.5MB).
$uploadpath = "/home/path/to/file/files/avatars/$_SESSION[user]";
$posted9 = hash('md5',$_SESSION["user"]).$ext; /* not for security mind you. */
// Upload the file to your specified path.
        $f = file_put_contents(
            $upload_path . $posted9,
            file_get_contents('php://input')
            );
        if($f)
    $m="Avatar updated<br/>"; // It worked.
  else
     $m="There was an error during the file upload.  Please try again."; // It failed :(.

Однако, когда изображения масштабируются, чтобы соответствовать комментариям на моем веб-сайте, они искажаются и теряют свое качество.

Как с помощью PHP изменить размер изображений, чтобы сохранить качество?


person user3236661    schedule 31.01.2014    source источник
comment
В Google есть множество руководств и примеров. Вы даже не удосужились его исследовать? На StackOverflow также есть бесчисленное множество вопросов такого типа...   -  person BenM    schedule 01.02.2014
comment
RTFM: php.net/imagecopyresampled   -  person Marc B    schedule 01.02.2014
comment
Вы спрашиваете об изменении размера изображений, но показываете только код для загрузки изображений... и находите лучший метод для проверки типа файла, чем длинный массив расширений файлов с учетом регистра.   -  person Mark Baker    schedule 01.02.2014


Ответы (2)


<?php

// Url of the file
$url = "/homepages/0/d502303335/htdocs/foo.jpg";

// Set a maximum height and width, I used the ones on your picture
$width = 49;
$height = 47;


// Get new dimensions
list($width_orig, $height_orig) = getimagesize($url);

// Resample
$image_p = imagecreatetruecolor($width, $height);
$image = imagecreatefromjpeg($url);
imagecopyresampled($image_p, $image, 0, 0, 0, 0, $width, $height, $width_orig, $height_orig);

// Output, You can use another url, In my case i just overwrite the picture
imagejpeg($image_p, $url);

?>
Here's the result: http://www.filmgratuiti.org/varie/cenBqHxMD90Q2.jpg
Much more better then your's

Итак, в основном после того, как вы загрузили файл, вы запускаете мой код, и все готово.

person Giacomo Tecya Pigani    schedule 31.01.2014

   public 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;
  } 

http://us3.php.net/imagecopyresampled

person ssaltman    schedule 31.01.2014