Изменить размер изображения на сервере - PullRequest
0 голосов
/ 27 октября 2011

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

Это часть кода, который у меня есть:

//This is after getting target which is the file saved on the server

move_uploaded_file($_FILES[$str]['tmp_name'], $target);

scale_image($target);

Теперь функция scale_image ()

function scale_image($image)
{

    if(!empty($image)) //the image to be uploaded is a JPG I already checked this
    {
        $source_image = imagecreatefromjpeg($image);
        $source_imagex = imagesx($source_image);
        $source_imagey = imagesy($source_image);

        $dest_imagex = 300;
        $dest_imagey = 200;

        $image = imagecreatetruecolor($dest_imagex, $dest_imagey);
        imagecopyresampled($image, $source_image, 0, 0, 0, 0,
        $dest_imagex, $dest_imagey, $source_imagex, $source_imagey);

    }
}

Но, похоже, это не сработало, оно переместило файл, но не изменило его размер..

Ответы [ 3 ]

6 голосов
/ 27 октября 2011

PHP поставляется со встроенной библиотекой GD .

Для манипулирования изображениями доступно множество функций, однако нет необходимости заново изобретать колесо.

Посмотрите эту суть для простого класса манипуляции с изображениями - https://gist.github.com/880506

Вот пример использования ...

$im = new ImageManipulator($_FILES['field_name']['tmp_name']);
$im->resample(640, 480); // resize to 640x480
$im->save('/path/to/destination/image.jpg', IMAGETYPE_JPEG);
1 голос
/ 27 октября 2011

Я не создавал файл в директорию сервера, так что это то, что я сделал move_uploaded_file ($ _ FILES [$ str] ['tmp_name'], $ target); scale_image ($ цель, $ цель);

Теперь функция scale_image ()

function scale_image($image,$target)
{
  if(!empty($image)) //the image to be uploaded is a JPG I already checked this
  {
     $source_image = imagecreatefromjpeg($image);
     $source_imagex = imagesx($source_image);
     $source_imagey = imagesy($source_image);

     $dest_imagex = 300;
     $dest_imagey = 200;

     $image2 = imagecreatetruecolor($dest_imagex, $dest_imagey);
     imagecopyresampled($image2, $source_image, 0, 0, 0, 0,
     $dest_imagex, $dest_imagey, $source_imagex, $source_imagey);

     imagejpeg($image2, $target, 100);

  }
}

Большое спасибо всем, ресурс, который вы мне дали, помог мне создать эту функцию.

0 голосов
/ 27 октября 2011

Переместите загруженный файл в каталог tmp (используйте tmp_name в $ _FILES для исходного местоположения), прочитайте его, используя gd, измените размер и сохраните его в окончательный каталог.

http://php.net/manual/en/function.move-uploaded-file.php http://us3.php.net/manual/en/function.imagecreate.php http://us3.php.net/manual/en/function.imagecopyresized.php

...