| |
reateGromJpeg(string $filename) или
int imageCreateGromif(string $filename)
Часть IV. Стандартные функции PHP 318
Эти функции загружают изображения из файла в память и возвращают его иденти-
фикатор. Как и после вызова imageCreate(), дальнейшая работа с картинкой
возможна только через этот идентификатор. При загрузке с диска изображение
распаковывается и хранится в памяти уже в неупакованном формате, для того чтобы
можно было максимально быстро производить с ним различные операции, такие как
масштабирование, рисование линий
и т. д. При сохранении на диск или выводе в браузер функцией imagePng() (или,
соответственно, imageJpeg() и imageGif()) картинка автоматически упаковывает-
ся.
Стоит заметить, что не обязательно все три функции будут доступны в вашей
версии PHP.
Скорее всего, в ней не окажется функции imageCreateFromGif(), а возможно, и
imageCreateFromJpeg(), потому что от первой разработчики GD просто отказа-
лись, а вторая появилась сравнительно недавно. Надеюсь, в скором времени
ситуация
нормализуется, но сейчас, к сожалению, это не так.
Определение параметров
изображения
Как только картинка создана и получен ее идентификатор, GD становится совершен-
но все равно, какой формат она имеет и каким путем ее создали. То есть все
осталь-
ные действия с картинкой происходят через ее идентификатор, вне зависимости от
формата, и это логично — ведь в памяти изображение все равно хранится в
распако-
ванном виде (наподобие BMP), а значит, информация о ее формате нигде не исполь-
зуется. Так что вполне возможно открыть PNG-изображение с помощью
imageCreateFromPng() и сохранить ее на диск функцией imageJpeg(), уже в дру-
гом формате. В дальнейшем можно в любой момент времени определить размер за-
груженной картинки, воспользовавшись функциями imageSX() и imageSY():
int imageSX(int $im)
Функция возвращает горизонтальный размер изображения, заданного своим иденти-
фикатором, в пикселах.
int imageSY(int $im)
Возвращает высоту картинки в пикселах.
int imageColorsTotal(int $im)
Эту функцию имеет смысл применять только в том случае, если вы работаете с изо-
бражениями, "привязанными" к конкретной палитре — например, с файлами GIF.
Она возвращает текущее количество цветов в палитре. Как мы вскоре увидим, каж-
дый вызов imageColorAllocate() увеличивает размер палитры. В то же время
известно, что если при небольшом размере палитры GIF-картинка сжимается очень
хорошо, то при переходе через степень двойки (например, от 16 к 17 цветам)
эффек-
тивность сжатия заметно падает, что ведет к увеличению размера (так уж устроен
Глава 23. Работа с изображениями 319
формат GIF). Если мы не хотим этого допустить и собираемся вызывать
imageColorAllocate() только до предела 16 цветов, а затем перейти на использо-
вание imageColorClosest(), нам очень может пригодиться рассматриваемая функ-
ция.
Сохранение изображения
Давайте займемся функцией, поставленной в листинг
|
|