Я действительно не смею сказать, что я здесь «говорю» о библиотеке GD, потому что я использовал GD всего один или два раза, и с большинством функций я еще не соприкоснулся. Но Санбужу Сяодяо с энтузиазмом попросил меня написать рукопись, поэтому у меня не было другого выбора, кроме как стиснуть зубы и написать немного о своем собственном опыте. Я надеюсь, что это может послужить отправной точкой.
Фактически, нам не обязательно использовать GD для достижения эффекта «графика» на веб-странице. Более простым решением является гистограмма, которую можно решить с помощью HTML. Например:
<? $b = массив(150,110,125,180,160,175,230,220 ?>);
<html>
<голова>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title></title>
<стиль>
<!--
тд {размер шрифта: 9pt }
-->
</стиль>
</голова>
<тело>
<граница таблицы=0>
<tr valign="bottom"> /* (1) */
<?for($i=0;$i<8;$i++) { ?><td align="center">
<table height="<?echo $b[$i];?>" border=0> /* (2) */
<тр>
<td bgcolor="#3F7F9F" width="40"></td> /* (3) */
</tr>
</table><br><font color="#3F7F9F"><?echo $b[$i];?></font> /* (4) */
</td><? } ?>
</tr>
</таблица>
</тело>
</html>
<? $b = array(150,110,125,180,160,175,230,220 ?> Это набор данных. Откуда берутся данные, не имеет никакого отношения к общей ситуации. Это зависит от ваших потребностей; Примечания, давайте теперь объясним их по одному.
(1) Здесь следует отметить valign="bottom", который предназначен для выравнивания нижней части содержимого ячейки. Зачем добавлять это в <tr>
Шерстяная ткань? Вы можете сделать так, чтобы содержимое этой строки в таблице соответствовало этому выравниванию, не указывая его в каждом <td>.
Таким образом, исходный код HTML-страницы, полученный в результате выполнения PHP, может сэкономить десятки байт! Экономьте драгоценное время зрителя.
(2)Внимание, здесь самое критичное! <table height="xxx"> мы используем атрибут высоты таблицы, чтобы
Добиться «колонн» разной высоты. Чтобы все могли ясно видеть, исходные данные не масштабировались пропорционально.
Если ваши данные очень большие или маленькие, нецелесообразно напрямую назначать их атрибуту высоты таблицы. Вместо этого их следует назначать в зависимости от ситуации.
Данные должны быть соответствующим образом масштабированы. Например, вы предполагаете, что каждое число в вашем наборе данных будет находиться в диапазоне от 3000 до 8000.
Вы можете уменьшить их в 25 раз, то есть height="<? echofloor(b[$i]/25); ?>"
(3) Укажите в этой строке bgcolor="#xxxxxx" — цвет цилиндра (RGB). На самом деле реальная гистограмма должна быть
Каждый цилиндр использует свой цвет. Чтобы сделать код максимально простым, я использовал этот цикл for, поэтому нет возможности указать его.
Каждому цилиндру присвоен свой цвет. —— На самом деле, есть способ, просто мне не нужно его писать для этого примера.
Функция, которая извлекает цвета, чтобы сбить с толку новичков. Итак, вам предстоит усовершенствовать эту часть.
(4) Здесь реальные данные отображаются тем же цветом, что и столбцы. Конечно, вы также можете разместить этот номер в верхней части цилиндра.
, может быть, более профессионально. Однако я все еще привык помещать это ниже.
С помощью таблиц HTML мы можем создавать различные гистограммы. В этом примере bgcolor используется для отображения цветовых блоков.
Кроме того, вы также можете использовать фон="(изображение)". Изображение имеет узор, поэтому столбец гистограммы имеет узоры.
А если вы отобразите реальные данные очень контрастным цветом в <td>, показанном в примечании (3) выше, это тоже даст очень хороший эффект.
Вышеописанное — эффективный способ избежать GD, но если вы хотите создавать сложную графику, вы должны использовать GD.
К сожалению, в китайском руководстве PHP4 сказано, что в библиотеке функций GD есть 44 функции, но я посмотрел последнюю версию английского руководства PHP4,
Функций GD уже более 80! Поскольку английский у автора плохой, я могу только догадываться, читая руководство на английском языке, поэтому я не уверен, поддерживает ли новая библиотека GD GIF снова? В любом случае, я думаю, поскольку мы используем совершенно бесплатный PHP, зачем нам «рисковать» и использовать защищенный авторским правом GIF? Почему бы не пойти бесплатно и не использовать PNG? Если вам не нужна анимация, PNG также может создавать файлы размером с GIF!
Далее я объединим программу и опишу эти часто используемые функции GD по одному предложению.
Начнем с самого начала.
<?
Header("Тип контента: изображение/png");
// Это отправляет HTTP-заголовок, чтобы сообщить браузеру: «Слушай, это изображение, не отображай его как текст!»
// По моим личным предпочтениям я использовал PNG. Конечно, вы также можете использовать Header("Content-type: image/gif");
// Или Header("Тип контента: image/jpeg");
$im = ImageCreate (50, 100);
// Создаем изображение. Обратите внимание, что формат изображения не был назначен при его создании.
// Функция ImageCreate, два параметра, без сомнения, это ширина и высота создаваемого изображения.
// Его возвращаемое значение — целое число. Это значение очень важно. Вы продолжаете рисовать это изображение.
// Пока вы не выведете это изображение, это значение будет использоваться везде. Назовем его идентификатором изображения.
// Поскольку частота использования довольно высока, мы присваиваем ее переменной с более коротким именем.
// Теперь нарисуем линию. Функция рисования линий выглядит следующим образом:
// строка изображения (int im, int x1, int y1, int x2, int y2, int col);
// Первый параметр im — это идентификатор изображения, за которым следуют x1, y1, x2, y2, само собой разумеется,
// Это координаты начальной точки (x1, y1) и конечной точки (x2, y2)! (Координаты верхнего левого угла изображения (0,0))
//Какой последний параметр? Это цвет! GD требует определения цветов для изображений и использования этих определенных цветов для рисования.
// Зачем нам нужно определять цвета для изображений? Я предполагаю, что он используется как «палитра» для изображений GIF, PNG и других.
// Это предполагает знание самого изображения, поэтому я не буду здесь вдаваться в подробности.
//Итак, прежде чем рисовать линию, нам нужно сначала определить цвет (что действительно хлопотно).
// $col_red = ImageColorAllocate($im, 255,192,192);
// Эта функция имеет четыре параметра, первый $im... мне все равно нужно повторять это каждый раз? В следующий раз я этого не скажу!
//Следующие три параметра — это красный (R), зеленый (G) и синий (B) компоненты определяемого цвета в диапазоне от 0 до 255.
// Это снова требует знаний физики и оптики. Различные световые компоненты трех основных цветов: красного, зеленого и синего.
//Производит постоянно меняющиеся цвета. Цвет, который я определил выше, — это 255 красных, 192 зеленых и 192 синих.
// Если я не ошибаюсь, это более яркий красный. Давайте попробуем провести линию через мгновение.
// Зачем ждать? Потому что, если на картинке только один цвет, ничего не будет видно!
// Давайте сначала сделаем фон черным!
// Хотя в руководстве это явно не указано, я обнаружил, что цвет, определенный первым, будет использоваться в качестве фона по умолчанию.
$col_black = ImageColorAllocate($im, 0,0,0);
// Определяет цвет. Нет красного, зеленого или синего света. Естественно, он черный-черный.
// Затем определите цвет, используемый для рисования линии:
$col_red = ImageColorAllocate($im, 255 192 192);
// Теперь можно начать рисовать красные линии:
линия изображения ($im, 10, 20, 45, 85, $col_red);
// Не волнуйтесь, после завершения этого предложения вы не сможете увидеть изображение.
ИзображениеPNG ($ im);
// Это предложение выводит изображение. ImagePNG() выводит изображение в формате PNG, а ImageJPEG выводит изображение в формате JPEG.
// ImageGIF выводит gif-изображение...
// Не забываем, что здесь есть параметр, если он отображается на экране, а не сохраняется в файл,
// Опустить этот параметр - имя сохраненного файла. Если вы хотите сохранить его как файл,
// Это должно быть написано так: ImagePNG($im,"test.png");
// Если путь не указан, этот файл сохраняется в текущем каталоге вашего веб-сайта.
// Если это JPEG, есть еще один параметр — качество JPEG (0~100).
// Если вы хотите отобразить его на экране, ImageJPEG($im,"",80);
// Если вы хотите сохранить, ImageJPEG($im,"test.jpg",80);
// Обратите внимание: если вы хотите сохранить это изображение как файл,
// Вы не можете использовать Header("Content-type: image/png");
// Потому что, как только это произойдет, это означает, что вы выведете изображение.
ImageDestroy($im);
// Уничтожаем изображение в памяти, чтобы освободить место в памяти.
// Вот и все: простейший рисунок GD готов.
// В ходе тестирования было обнаружено, что файл изображения, созданный в формате PNG, имеет размер всего 131 байт.
// Для использования формата JPEG, даже с наихудшим качеством (0), требуется 855 байт, а качество изображения слишком плохое для просмотра.
// Для JPEG высочайшего качества требуется 2360 байт, но цвета все равно не такие яркие, как при использовании PNG.
// Видно, что для такого рода изображений с небольшим количеством цветов использование PNG гораздо более рентабельно, чем JPEG.
?>
На этот раз я остановлюсь здесь и постараюсь продолжить писать как можно скорее.