Редактирование изображений PHP - PullRequest
0 голосов
/ 17 августа 2010

Сначала прочитайте внизу, где находится самая актуальная информация. В основном это старая информация (хотя она может вам понадобиться).

Я начинаю создавать PHP-функцию, которая трансформирует / деформирует изображение, которое вы ему даете. Мне нужно сделать черный фон для запуска, так что это то, что у меня есть: (больше нет)

function morph($img) {

    list($width, $height) = getimagesize($img);
    //$width = $size[0];
    //$height = $size[1];
    $tempImg = imagecreatetruecolor($width, $height);

    //Create the image background
    imagefilledrectangle($tempImg, 0, 0, $width, $height, imagecolorallocate($tempImg, 0, 0, 0));
    return $tempImg;
}

Но все, что он мне дает, это сломанное изображение, по крайней мере, с точки зрения браузера. Что может быть не так? Заранее спасибо.

РЕДАКТИРОВАТЬ: Альтернативой исправлению этой проблемы, с которой у многих людей возникают проблемы, было бы просто создать метод, который создает истинное цветное изображение того же размера, что и изображение, из аргумента, заполненного черным. Я сделаю все возможное, чтобы сделать это, но было бы здорово, если бы вы тоже могли помочь.

Это моя текущая попытка:

function morph($img) {

    list($width, $height) = getimagesize($img);
    //$width = $size[0];
    //$height = $size[1];
        $tempImg = imagecreatetruecolor($width, $height);

        //Create the image background
        imagefilledrectangle($tempImg, 0, 0, $width, $height, imagecolorallocate($tempImg, 0, 0, 0));
        return $tempImg;
}

Тот же результат.

РЕДАКТИРОВАТЬ 2: Я нашел источник проблемы! Обследовав результат, я обнаружил, что размеры, которые получал imagecreatetruecolor (), были недопустимыми. Я что-то не так делаю в getimagesize () и массиве, который я получаю. Мне нужно выяснить, что.

РЕДАКТИРОВАТЬ 3: проблема в getimagesize (). Это говорит, что нет такого файла или каталога в строке 13 (строка с getimagesize). В чем дело? Это было проблемой все время.

Ответы [ 5 ]

1 голос
/ 17 августа 2010

это $ width и $ heigth на самом деле int?

0 голосов
/ 18 августа 2010

РЕДАКТИРОВАТЬ 3: проблема в getimagesize (). Это говорит, что нет такого файла или каталога в строке 13 (строка с getimagesize). В чем дело?

Что ж, мы не можем точно сказать, что не так с кодом, который вы разместили, только что вы передаете недопустимый аргумент в функцию.

Мое лучшее предположение - то, что $ img был ранее создан в RAM с помощью imagecreate (), который возвращает дескриптор resouce.

getimagesize ($ img) ожидает, что путь к файлу будет передан в качестве параметра, поэтому передача дескриптора будет его причиной.

Если это проблема, то вы сможете исправить ее, передав размеры в функцию и удалив строку с getimagesize () на ней.

Это была проблема все время.

Не совсем. pr0wl указал на исходную проблему, которую вы удалили и заменили другой проблемой.

0 голосов
/ 18 августа 2010

Вы должны указать тип файла, который вы даете клиенту.заголовок («Тип контента: изображение / что-то»);Где что-то типа изображения.Никакая другая печать, эхо или html не должны быть на странице, иначе изображение будет повреждено.

0 голосов
/ 17 августа 2010

Проверьте журналы ошибок или запустите ваш скрипт без установки типа содержимого заголовка.Вы увидите сообщения об ошибках, которые вызывают сбой вашего скрипта.В этом случае вы, скорее всего, получите что-то вроде «$ tempImg не является ресурсом».

0 голосов
/ 17 августа 2010

Вы установили тип mime файла, который выводите, в image / png?

Редактировать: например: header ("Content-type: image / png");

Однажды у меня была такая же проблема, пока я ее не добавил.

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