Image resize PHP [duplicate]

10
задан Community 23 May 2017 в 12:11
поделиться

4 ответа

imagecopyresized принимает в качестве второго параметра ресурс изображения, а не имя файла. Сначала нужно загрузить файл. Если вы знаете тип файла, вы можете использовать imagecreatefromFILETYPE для его загрузки. Например, если это JPEG, используйте imagecreatefromjpeg и передайте ему имя файла - это вернет ресурс изображения.

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

$oldImage = imagecreatefromstring(file_get_contents($_FILES['image']['tmp_name']));
5
ответ дан 3 December 2019 в 23:48
поделиться

Я работал над чем-то похожим. Я пробовал Ghostscript и ImageMagic. Это хорошие инструменты, но для их настройки требуется немного времени. В итоге я использовал sips на сервере Snow Leopard. Не уверен, что он встроен в сервер Linux, но это более быстрое решение, которое я нашел, если вам нужно что-то сделать быстро.

0
ответ дан 3 December 2019 в 23:48
поделиться

$ _ FILES ['image'] ['tmp_name'] - это путь, а не ресурс изображения. Вы должны использовать одну из функций imagecreatefrom * () для создания ресурса.

3
ответ дан 3 December 2019 в 23:48
поделиться

Вот моя реализация сохранения уменьшенной картинки:

Функция изменения размера и сохранения:

function SaveThumbnail($imagePath, $saveAs, $max_x, $max_y) 
{
    ini_set("memory_limit","32M");
    $im  = imagecreatefromjpeg ($imagePath);
    $x = imagesx($im);
    $y = imagesy($im);

    if (($max_x/$max_y) < ($x/$y)) 
    {
        $save = imagecreatetruecolor($x/($x/$max_x), $y/($x/$max_x));
    }
    else 
    {
        $save = imagecreatetruecolor($x/($y/$max_y), $y/($y/$max_y));
    }
    imagecopyresized($save, $im, 0, 0, 0, 0, imagesx($save), imagesy($save), $x, $y);

    imagejpeg($save, $saveAs);
    imagedestroy($im);
    imagedestroy($save);
}

Использование:

$thumb_dir = "/path/to/thumbnaildir/"
$thumb_name = "thumb.jpg"
$muf = move_uploaded_file($_FILES['imgfile']['tmp_name'], "/tmp/test.jpg")

if($muf)
{
    SaveThumbnail("/tmp/test.jpg", $thumb_dir . $thumb_name, 128, 128);
}
3
ответ дан 3 December 2019 в 23:48
поделиться
Другие вопросы по тегам:

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