PHP скрипт изменения размера изображения? - PullRequest
0 голосов
/ 12 ноября 2009

Хорошо, я действительно новичок в PHP. Я нашел следующий скрипт ниже. Но я не знаю, как его использовать. Мне было интересно, куда мне поместить ссылку на изображение, например images / photo.jpg , чтобы я начал изучать этот скрипт, спасибо.

Вот код.

<?php
function resizeImage($originalImage,$toWidth,$toHeight){

    // Get the original geometry and calculate scales
    list($width, $height) = getimagesize($originalImage);
    $xscale=$width/$toWidth;
    $yscale=$height/$toHeight;

    // Recalculate new size with default ratio
    if ($yscale>$xscale){
        $new_width = round($width * (1/$yscale));
        $new_height = round($height * (1/$yscale));
    }
    else {
        $new_width = round($width * (1/$xscale));
        $new_height = round($height * (1/$xscale));
    }

    // Resize the original image
    $imageResized = imagecreatetruecolor($new_width, $new_height);
    $imageTmp     = imagecreatefromjpeg ($originalImage);
    imagecopyresampled($imageResized, $imageTmp, 0, 0, 0, 0, $new_width, $new_height, $width, $height);

    return $imageResized;
}
?> 

Ответы [ 3 ]

1 голос
/ 16 ноября 2009

Здесь есть несколько потенциальных ошибок, поэтому я дам вам несколько возможных проблем, с которыми вы можете столкнуться:

  1. Вам необходимо указать полный путь к изображению, чтобы его можно было прочитать. Для этого я использую следующий скрипт:
function getRoot(){
    $cwd = getcwd();
    $splitCwd = explode("/", $cwd);
    $root = "";
    for($count=0; $count<count($splitCwd)-1;$count++){
      $root .= '/' . $splitCwd[$count];
    }
    $root = $root . '/';
    return $root;
}

Затем вы можете передать (getRoot (). $ Image, ...)

  1. Создайте переключатель, который будет проверять тип файла (см. Мой ответ здесь ). Это позволит вам изменять размеры больше, чем просто jpegs, и выводить больше, чем просто jpegs, что хорошо, когда возможно использование прозрачности.

  2. Возможен конечный параметр или два, то есть выходное имя файла. Таким образом, вы можете создавать эскизы, оставляя исходное изображение без изменений. В этом случае вы должны выполнить imagejpeg (или imagepng и т. Д.) И передать ему новый параметр имени, если он установлен.

0 голосов
/ 12 ноября 2009

Вместо обратной строки необходимо добавить

header('Content-type: image/jpeg');
imagejpeg($imageResized);

Или отметьте http://www.php.net/manual/en/function.imagejpeg.php и Пример # 2 Сохранение изображения JPEG

0 голосов
/ 12 ноября 2009

Вы передадите ссылку на оригинальный JPEG в качестве первого параметра в функции, который будет установлен как $ originalImage.

Поэтому при вызове функции вы должны использовать:

resizeImage("images/photo.jpg",800,600);

Два числа будут вашими значениями ширины / высоты.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...