1
0
mirror of https://github.com/php/doc-ru.git synced 2026-04-27 09:18:07 +02:00
Files
archived-doc-ru/reference/image/functions/imagecopyresampled.xml
T
Sergey Panteleev 6d43fd64d7 Исправление форматирования
[skip-spellcheck]
[skip-lint]
2022-12-27 03:42:36 +03:00

299 lines
11 KiB
XML
Raw 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: 593ea510e853ff034e03f78a4be0daa41661c9d4 Maintainer: tmn Status: ready -->
<!-- Reviewed: no -->
<refentry xml:id="function.imagecopyresampled" xmlns="http://docbook.org/ns/docbook">
<refnamediv>
<refname>imagecopyresampled</refname>
<refpurpose>
Копирование и изменение размера изображения с ресемплированием
</refpurpose>
</refnamediv>
<refsect1 role="description">
&reftitle.description;
<methodsynopsis>
<type>bool</type><methodname>imagecopyresampled</methodname>
<methodparam><type>GdImage</type><parameter>dst_image</parameter></methodparam>
<methodparam><type>GdImage</type><parameter>src_image</parameter></methodparam>
<methodparam><type>int</type><parameter>dst_x</parameter></methodparam>
<methodparam><type>int</type><parameter>dst_y</parameter></methodparam>
<methodparam><type>int</type><parameter>src_x</parameter></methodparam>
<methodparam><type>int</type><parameter>src_y</parameter></methodparam>
<methodparam><type>int</type><parameter>dst_width</parameter></methodparam>
<methodparam><type>int</type><parameter>dst_height</parameter></methodparam>
<methodparam><type>int</type><parameter>src_width</parameter></methodparam>
<methodparam><type>int</type><parameter>src_height</parameter></methodparam>
</methodsynopsis>
<para>
<function>imagecopyresampled</function> копирует прямоугольную часть одного
изображения на другое изображение, интерполируя значения пикселов таким образом,
чтобы уменьшение размера изображения не уменьшало его чёткости.
</para>
<para>
Другими словами, <function>imagecopyresampled</function> берет прямоугольный
участок из <parameter>src_image</parameter> с шириной
<parameter>src_width</parameter> и высотой <parameter>src_height</parameter> на
координатах <parameter>src_x</parameter>,<parameter>src_y</parameter> и помещает
его в прямоугольный участок изображения <parameter>dst_image</parameter> шириной
<parameter>dst_width</parameter> и высотой <parameter>dst_height</parameter> на
координатах <parameter>dst_x</parameter>,<parameter>dst_y</parameter>.
</para>
<para>
Если координаты, ширина или высота исходного и конечного изображений различны,
копируемый фрагмент будет растянут или сжат. Координаты отсчитываются от левого
верхнего угла изображения. Функцию можно использовать для наложения участков
на то же изображение, с которого они скопированы (если
<parameter>dst_image</parameter> имеет то же значение, что и
<parameter>src_image</parameter>), но если участки будут пересекаться, результат
непредсказуем.
</para>
</refsect1>
<refsect1 role="parameters">
&reftitle.parameters;
<para>
<variablelist>
<varlistentry>
<term><parameter>dst_image</parameter></term>
<listitem>
<para>&gd.image.destination;</para>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>src_image</parameter></term>
<listitem>
<para>&gd.image.source;</para>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>dst_x</parameter></term>
<listitem>
<para>
x-координата результирующего изображения.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>dst_y</parameter></term>
<listitem>
<para>
y-координата результирующего изображения.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>src_x</parameter></term>
<listitem>
<para>
x-координата исходного изображения.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>src_y</parameter></term>
<listitem>
<para>
y-координата исходного изображения.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>dst_width</parameter></term>
<listitem>
<para>
Результирующая ширина.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>dst_height</parameter></term>
<listitem>
<para>
Результирующая высота.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>src_width</parameter></term>
<listitem>
<para>&gd.source.width;</para>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>src_height</parameter></term>
<listitem>
<para>&gd.source.height;</para>
</listitem>
</varlistentry>
</variablelist>
</para>
</refsect1>
<refsect1 role="returnvalues">
&reftitle.returnvalues;
<para>
&return.success;
</para>
</refsect1>
<refsect1 role="changelog">
&reftitle.changelog;
<informaltable>
<tgroup cols="2">
<thead>
<row>
<entry>&Version;</entry>
<entry>&Description;</entry>
</row>
</thead>
<tbody>
<row>
<entry>8.0.0</entry>
<entry>
<parameter>dst_image</parameter> и <parameter>src_image</parameter> теперь ожидают экземпляр
<classname>GdImage</classname>;
ранее ожидался ресурс (<type>resource</type>).
</entry>
</row>
</tbody>
</tgroup>
</informaltable>
</refsect1>
<refsect1 role="examples">
&reftitle.examples;
<para>
<example>
<title>Простой пример</title>
<para>
В этом примере изображение будет сжато до половины исходного размера.
</para>
<programlisting role="php">
<![CDATA[
<?php
// файл
$filename = 'test.jpg';
$percent = 0.5;
// тип содержимого
header('Content-Type: image/jpeg');
// получение новых размеров
list($width, $height) = getimagesize($filename);
$new_width = $width * $percent;
$new_height = $height * $percent;
// ресэмплирование
$image_p = imagecreatetruecolor($new_width, $new_height);
$image = imagecreatefromjpeg($filename);
imagecopyresampled($image_p, $image, 0, 0, 0, 0, $new_width, $new_height, $width, $height);
// вывод
imagejpeg($image_p, null, 100);
?>
]]>
</programlisting>
&example.outputs.similar;
<mediaobject>
<alt>Вывод примера: Простой пример</alt>
<imageobject>
<imagedata fileref="en/reference/image/figures/imagecopyresampled.jpg"/>
</imageobject>
</mediaobject>
</example>
</para>
<para>
<example>
<title>Ресэмплирование изображения с сохранением пропорций</title>
<para>
В этом примере изображение будет сжато до 200 пикселов по ширине или высоте,
смотря что больше.
</para>
<programlisting role="php">
<![CDATA[
<?php
// файл
$filename = 'test.jpg';
// задание максимальной ширины и высоты
$width = 200;
$height = 200;
// тип содержимого
header('Content-Type: image/jpeg');
// получение новых размеров
list($width_orig, $height_orig) = getimagesize($filename);
$ratio_orig = $width_orig/$height_orig;
if ($width/$height > $ratio_orig) {
$width = $height*$ratio_orig;
} else {
$height = $width/$ratio_orig;
}
// ресэмплирование
$image_p = imagecreatetruecolor($width, $height);
$image = imagecreatefromjpeg($filename);
imagecopyresampled($image_p, $image, 0, 0, 0, 0, $width, $height, $width_orig, $height_orig);
// вывод
imagejpeg($image_p, null, 100);
?>
]]>
</programlisting>
&example.outputs.similar;
<mediaobject>
<alt>Вывод примера: Ресэмплирование изображения с сохранением пропорций</alt>
<imageobject>
<imagedata fileref="en/reference/image/figures/imagecopyresampled_2.jpg"/>
</imageobject>
</mediaobject>
</example>
</para>
</refsect1>
<refsect1 role="notes">
&reftitle.notes;
<note>
<para>
Существует проблема связанная с ограничениями палитровых изображений (255+1
цвет). Ресэмплирование или фильтрация изображения требует больше цветов, чем
255. Для расчёта нового пиксела и его цвета применяется некоторое приближение.
В случае палитровых изображений мы пытаемся создать новый цвет, а если это не
удаётся, мы выбираем ближайший (теоретически) вычисленный цвет. Это не всегда
визуально ближайший цвет. Такой подход может давать в результате пустые (или
визуально пустые) изображения. Для устранения этой проблемы, пожалуйста,
используйте truecolor-изображения в качестве результирующих, создаваемые
функцией <function>imagecreatetruecolor</function>.
</para>
</note>
</refsect1>
<refsect1 role="seealso">
&reftitle.seealso;
<simplelist>
<member><function>imagecopyresized</function></member>
<member><function>imagescale</function></member>
<member><function>imagecrop</function></member>
</simplelist>
</refsect1>
</refentry>
<!-- 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
-->