1
0
mirror of https://github.com/php/doc-ru.git synced 2026-03-24 07:42:22 +01:00
Files
archived-doc-ru/reference/image/examples.xml
2025-01-18 07:56:33 +03:00

148 lines
6.7 KiB
XML
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<?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>&lt;img
src=&quot;button.php?text=text&quot;&gt;</literal>. Приведённый скрипт <filename>button.php</filename>
возьмёт строку <literal>&quot;text&quot;</literal>, наложит её поверх базового изображения
<literal>&quot;images/button1.png&quot;</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
-->