Класс обработки изображений в PHP - PullRequest
0 голосов
/ 11 января 2010

Мне нужно создать класс обработки фотографий PHP, я знаю, что есть МНОГИЕ, которые уже существуют для публики, но мне нужно создать один, чтобы делать то, что мне нужно, и ничего лишнего и ни меньше.

Мне нужен мой класс, чтобы сделать это ...

1)
Я создаю новый экземпляр своего класса и передаю либо URL-адрес фотографии, либо путь к локальной фотографии, загружаемой с помощью формы POST.

2)
Затем мне нужно взять основное изображение и проверить его размеры, если оно шире 800 пикселей, мне нужно изменить его размер, если оно не шире 800, то я просто оставляю его

3)
Теперь нам нужно создать 2 миниатюры разного размера из этого изображения, если мы изменили размер изображения, чтобы удовлетворить наши требования в 800 пикселей, мы используем это изображение для создания миниатюр, в противном случае мы создадим наши миниатюры из исходного изображения.

4)
Затем мы обновляем несколько записей базы данных

Затем завершено.

Я знаю, что это не так сложно, но мне нужно создать это с учетом максимальной производительности, например, если пользователь загружает 2-мегабайтную фотографию, я не хочу загружать память и продолжать создавать эскизы из этой фотографии, если мы Я уже сделал уменьшенное изображение. Думаю, ему следует использовать уменьшенное изображение для создания миниатюр.

Имея всю эту информацию сейчас, есть ли у вас какие-либо предложения о том, как сделать это в GD или imagemagick. Если я создаю метод, который делает миниатюры, как я должен убедиться, что он продолжает использовать меньшие изображения для создания других меньших изображений? Я посмотрел на некоторые существующие классы изображений, и все они очень сложны и выполнены IMO, однако ни один из них не выполняет именно эту простую задачу.

1 Ответ

0 голосов
/ 11 января 2010

Библиотека PHP GD использует объект ресурса для представления изображений. Для изменения размера изображения вы можете использовать imagecopyresampled или imagecopyresized .

Если размер был изменен, используйте новый объект изображения с измененным размером для будущих операций, в противном случае используйте исходный объект ресурса.

...