mirror of
https://github.com/php/doc-ru.git
synced 2026-03-24 07:42:22 +01:00
148 lines
6.7 KiB
XML
148 lines
6.7 KiB
XML
<?xml version="1.0" encoding="utf-8"?>
|
||
<!-- EN-Revision: 9960a09a5705102bf4dd0ce63e03d9ec716d0015 Maintainer: mch Status: ready -->
|
||
<!-- Reviewed: no -->
|
||
<chapter xml:id="image.examples" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
|
||
&reftitle.examples;
|
||
<section xml:id="image.examples-png">
|
||
<title>Создаёт PNG-изображение средствами PHP</title>
|
||
<para>
|
||
<example>
|
||
<title>Пример создания изображения в формате PNG средствами PHP</title>
|
||
<programlisting role="php">
|
||
<![CDATA[
|
||
<?php
|
||
|
||
header("Content-type: image/png");
|
||
$string = $_GET['text'];
|
||
$im = imagecreatefrompng("images/button1.png");
|
||
$orange = imagecolorallocate($im, 220, 210, 60);
|
||
$px = (imagesx($im) - 7.5 * strlen($string)) / 2;
|
||
imagestring($im, 3, $px, 9, $string, $orange);
|
||
imagepng($im);
|
||
|
||
?>
|
||
]]>
|
||
</programlisting>
|
||
</example>
|
||
Этот пример можно было бы вызвать на странице с тегом: <literal><img
|
||
src="button.php?text=text"></literal>. Приведённый скрипт <filename>button.php</filename>
|
||
возьмёт строку <literal>"text"</literal>, наложит её поверх базового изображения
|
||
<literal>"images/button1.png"</literal>
|
||
и выведет конечное изображение. Это удобный способ
|
||
не создавать новую кнопку каждый раз,
|
||
когда требуется изменить текст кнопки. Этот метод
|
||
генерирует кнопку динамически.
|
||
</para>
|
||
</section>
|
||
<section xml:id="image.examples-watermark">
|
||
<title>Добавление водяных знаков на изображения через альфа-каналы</title>
|
||
<para>
|
||
<example>
|
||
<title>Добавление водяных знаков на изображения через альфа-каналы</title>
|
||
<programlisting role="php">
|
||
<![CDATA[
|
||
<?php
|
||
|
||
// Загрузка штампа и фото, для которого применяется водяной знак (называется штамп или печать)
|
||
$stamp = imagecreatefrompng('stamp.png');
|
||
$im = imagecreatefromjpeg('photo.jpeg');
|
||
|
||
// Установка полей для штампа и получение высоты/ширины штампа
|
||
$marge_right = 10;
|
||
$marge_bottom = 10;
|
||
$sx = imagesx($stamp);
|
||
$sy = imagesy($stamp);
|
||
|
||
// Копирование изображения штампа на фотографию путём смещения края
|
||
// и ширины фотографии для расчёта позиционирования штампа.
|
||
imagecopy($im, $stamp, imagesx($im) - $sx - $marge_right, imagesy($im) - $sy - $marge_bottom, 0, 0, imagesx($stamp), imagesy($stamp));
|
||
|
||
// Вывод изображения
|
||
header('Content-type: image/png');
|
||
imagepng($im);
|
||
|
||
?>
|
||
]]>
|
||
</programlisting>
|
||
<mediaobject>
|
||
<alt>Добавление водяных знаков на изображения через альфа-каналы</alt>
|
||
<imageobject>
|
||
<imagedata fileref="en/reference/image/figures/watermarks.png"/>
|
||
</imageobject>
|
||
</mediaobject>
|
||
</example>
|
||
Этот пример — распространенный способ добавления водяных знаков и штампов к фотографиям и изображениям,
|
||
защищённым авторским правом. Обратите внимание, что альфа-канал на изображении
|
||
штампа в виде текста сглаживается. Это сохранилось при копировании.
|
||
</para>
|
||
</section>
|
||
<section xml:id="image.examples.merged-watermark">
|
||
<title>Создание полупрозрачного водяного знака функцией <function>imagecopymerge</function></title>
|
||
<para>
|
||
<example>
|
||
<title>Пример создания полупрозрачного водяного знака функцией <function>imagecopymerge</function></title>
|
||
<programlisting role="php">
|
||
<![CDATA[
|
||
<?php
|
||
|
||
// Загрузка штампа и фото, для которого применяется водяной знак (называется штамп или печать)
|
||
$im = imagecreatefromjpeg('photo.jpeg');
|
||
|
||
// Сначала создаём изображение штампа вручную через модуль GD
|
||
$stamp = imagecreatetruecolor(100, 70);
|
||
imagefilledrectangle($stamp, 0, 0, 99, 69, 0x0000FF);
|
||
imagefilledrectangle($stamp, 9, 9, 90, 60, 0xFFFFFF);
|
||
imagestring($stamp, 5, 20, 20, 'libGD', 0x0000FF);
|
||
imagestring($stamp, 3, 20, 40, '(c) 2007-9', 0x0000FF);
|
||
|
||
// Установка полей для штампа и получение высоты/ширины штампа
|
||
$marge_right = 10;
|
||
$marge_bottom = 10;
|
||
$sx = imagesx($stamp);
|
||
$sy = imagesy($stamp);
|
||
|
||
// Слияние штампа с фотографией. Прозрачность 50 %
|
||
imagecopymerge($im, $stamp, imagesx($im) - $sx - $marge_right, imagesy($im) - $sy - $marge_bottom, 0, 0, imagesx($stamp), imagesy($stamp), 50);
|
||
|
||
// Сохранение изображения в файл
|
||
imagepng($im, 'photo_stamp.png');
|
||
|
||
?>
|
||
]]>
|
||
</programlisting>
|
||
<mediaobject>
|
||
<alt>Пример создания полупрозрачного водяного знака функцией imagecopymerge()</alt>
|
||
<imageobject>
|
||
<imagedata fileref="en/reference/image/figures/watermark-merged.png"/>
|
||
</imageobject>
|
||
</mediaobject>
|
||
</example>
|
||
В примере функция <function>imagecopymerge</function> объединяет штамп
|
||
с исходным изображением. Так устанавливают прозрачность штампа —
|
||
в примере установили прозрачность на уровне 50 % непрозрачности (opacity).
|
||
На практике это принесло бы пользу для защиты авторских прав, поскольку полупрозрачные водяные знаки трудно удалить,
|
||
но при этом изображения видны зрителям.
|
||
</para>
|
||
</section>
|
||
</chapter>
|
||
<!-- Keep this comment at the end of the file
|
||
Local variables:
|
||
mode: sgml
|
||
sgml-omittag:t
|
||
sgml-shorttag:t
|
||
sgml-minimize-attributes:nil
|
||
sgml-always-quote-attributes:t
|
||
sgml-indent-step:1
|
||
sgml-indent-data:t
|
||
indent-tabs-mode:nil
|
||
sgml-parent-document:nil
|
||
sgml-default-dtd-file:"~/.phpdoc/manual.ced"
|
||
sgml-exposed-tags:nil
|
||
sgml-local-catalogs:nil
|
||
sgml-local-ecat-files:nil
|
||
End:
|
||
vim600: syn=xml fen fdm=syntax fdl=2 si
|
||
vim: et tw=78 syn=sgml
|
||
vi: ts=1 sw=1
|
||
-->
|