Создаем динамические веб-сайты с помощью PHP, MySQL и JavaScript |
Страница 419 из 478 чего используется одна из функций imagecreatefrom, соответствующая типу загруженного изображения. Теперь изображение находится в том формате, который может быть обработан средствами РНР. Если тип загруженного изображения не относится к разрешенным, флажок Stypeok принимает значение FALSE, что препятствует выполнению последнего блока кода загрузки изображения. Сначала в переменных $w и $h сохраняются размеры изображения, для чего используется следующая инструкция, представляющая собой быстрый способ присваивания значений из массива отдельным переменным: list($w, $h) = getimagesize($saveto); Затем с использованием значения переменной $тах (которое установлено в 100) вычисляются новые размеры, которые приведут к созданию нового изображения с таким же соотношением сторон, но размерами, не превышающими 100 пикселов. В результате этого переменные $tw и $th получают новые значения. Если хочется получить миниатюры меньшего или большего размера, нужно просто соответствующим образом изменить значение переменной $тах. После этого вызывается функция imagecreatetruecol or, которая создает новую пустую картинку шириной $tw и высотой $th и сохраняет ее в переменной $tmp. Затем вызывается функция imagecopyresampled, которая изменяет размер изображения, сохраненного в переменной $src, на тот, который хранится в новой переменной $tmp. Иногда изменение размера изображения может привести к небольшой потере резкости получаемой копии, поэтому в следующем фрагменте кода используется функция i mageconvol uti on, слегка повышающая резкость изображения. И наконец, изображение сохраняется как jpeg-файл в том месте, которое определено значением переменной Ssaveto, после чего оба изображения — исходное и пустое, имеющее измененные размеры, — удаляются из памяти с помощью функции imagedestroy, возвращая системе занятую под них память. И последнюю, но не менее важную задачу выполняет функция showProf i 1 е из файла rnfunctions.php, которая позволяет пользователю посмотреть, как выглядит текущий профиль, перед его редактированием. Эта функция вызывается до отображения формы HTML. Если профиля еще нет, ничего отображаться не будет. Результат загрузки в браузер файла, код которого содержится в примере 20,9, показан на рис. 20.4. На этом рисунке можно увидеть, что текстовое поле было заранее заполнено текстом «about те» («обо мне»). <?php 11 rnprofile.php i ncl ude__once ' rnheader. php'; |