<?xml version='1.0' encoding='UTF-8'?>
<rss version='2.0'>
	<channel>
		<title>Image bundle</title>
		<link>https://lily-software.com</link>
		<description>Лента комментариев страницы</description>
		<generator>Cotonti</generator>
		<language>ru</language>
		<pubDate>Thu, 04 Jun 2026 01:50:28 +0300</pubDate>

		<item>
			<title>Комментируемая страница</title>
			<description><![CDATA[<p>Компонент для работы с изображениями. Работает как с библиотекой <a href="https://www.php.net/manual/ru/book.image.php" target="_blank" rel="nofollow noreferrer noopener">GD</a>, так и с <a href="https://www.php.net/manual/ru/book.imagick.php" target="_blank" rel="nofollow noreferrer noopener">ImageMagick</a>. Последняя поддерживает большее количество форматов изображений, в т.ч. HEIC/HEIF, которые используются в смартфонах iPhone от Apple.</p>

<p>По умолчанию, если устанвлена ImageMagick, то используется она.</p>

<p>Чтобы использовать этот компонент в Ваших расширениях, добавте в начало php-файла</p>

<pre class="brush:php;">
&lt;?php

use image\Image;</pre>

<p> </p>

<p>Получить используемый драйвер:</p>

<pre class="brush:php;">
$driver = Image::currentDriver();</pre>

<p>Метод возвращает одну из констант: <code>Image::DRIVER_IMAGICK</code> или <code>Image::DRIVER_GD</code> или <code>null</code>, если ни одна из библиотек недоступна и обработка изображений невозможна.</p>

<p> </p>

<p>Получить список поддерживаемых форматов в виде массива:</p>

<pre class="brush:php;">
$supportedFormats = Image::supportedFormats();</pre>

<p> </p>

<p>Загрузка изображения для дальнейшей обработки:</p>

<pre class="brush:php;">
$image = Image::load($path, ?array $options = null);</pre>

<p>в <code>$path</code> можно передать<br />
- строку с путем к файлу или URL удаленного файла<br />
- ресурс, полученный от <a href="https://www.php.net/manual/ru/function.fopen.php" target="_blank" rel="nofollow noreferrer noopener"><code>fopen()</code></a><br />
- строку с бинарными данными, содержащими избражение или строку закодированную в <strong>base64</strong> c бинарными данными изображения<br />
- <a href="https://ru.wikipedia.org/wiki/Data:_URL" target="_blank" rel="nofollow noreferrer noopener">data URL</a></p>

<p>в <code>$options</code> можно указать какой именно использовать, например:</p>

<pre class="brush:php;">
$image = Image::load('/path/to/file', ['driver' =&gt; Image::DRIVER_GD]);</pre>

<p>Этот метод возвращает экземпляр класса <code>\image\imagick\Image</code> или <code>\image\gd\Image</code>, которые являются наследниками класса <code>\image\AbstractImage</code>. Или будет выброшено исключение в случае неудачи.</p>

<p> </p>

<h3>Методы класса для работы с изображениями:</h3>

<p> </p>

<p>Можно получить экземпляр класса <code>\Imagick</code> или <code>\GdImage</code>|<code>resource</code> (в зависимости от используемой библиотеки) и работать с ними напрямую:</p>

<pre class="brush:php;">
$image-&gt;getData();</pre>

<p> </p>

<p>Сохранить изображение:</p>

<pre class="brush:php;">
$image-&gt;save(?string $fileName = null, ?int $quality = null, ?string $format = null);</pre>

<p><code>$fileName</code> - полный путь и имя файла для сохранения. Если не указано, то изменения будут сохранены в ранее загруженный файл. Иначе будет создан новый файл, а старый останется без изменений.</p>

<p><code>$quality</code> - качество. Используется только если формат сохраняемого файла поддерживает этот параметр.</p>

<p><code>$format</code> - формат сохраняемого изображения. Если не указано, будет использовано расширение файла.</p>

<p> </p>

<p>Кодирование формата в указанный формат:</p>

<pre class="brush:php;">
$image-&gt;encode(string $format, ?int $quality = null, ?string $fileName = null);</pre>

<p><code>$format</code> - формат изображения. Например: 'jpeg', 'png', 'heif'. Или 'data-url' для кодирования изображения в data Url;</p>

<p><code>$quality</code> - качество. Используется только если формат сохраняемого файла поддерживает этот параметр.</p>

<p><code>$fileName</code> - Имя файла для сохранения изображения. Если <code>null</code> - изображение будет возвращено в виде строки бинарных данных.</p>

<p> </p>

<pre class="brush:php;">
$image-&gt;crop(int $width, int $height, ?int $x = null, ?int $y = null);</pre>

<p>Обрезает изображение.</p>

<p>Параметры <code>$x</code> и <code>$y</code> координаты правого верхнего угла области для нового изображения.</p>

<p><code>$width</code> и <code>$height</code> - ширина и высота области нового изображения.</p>

<p> </p>

<pre class="brush:php;">
$image-&gt;fixOrientation();</pre>

<p>Поворачивает изображение в соотвествии с данными об ориентации из EXIF</p>

<p> </p>

<pre class="brush:php;">
$image-&gt;flipHorizontally();
$image-&gt;flipVertically();</pre>

<p>Отразить изображение горизонтально или вертикально соотвественно</p>

<p> </p>

<pre class="brush:php;">
$image-&gt;getWidth();
$image-&gt;getHeight();</pre>

<p>Возвращают ширину и высоту изображения.</p>

<p> </p>

<pre class="brush:php;">
$image-&gt;getOrientation();</pre>

<p>Возвращает ориентацию изображения из EXIF.</p>

<p> </p>

<pre class="brush:php;">
$image-&gt;paste(AbstractImage $image, $x, $y, $alpha = 100);</pre>

<p>Вставляет одно изображение в другое. Может использоваться для наложения "водяного знака" или создания коллажей.</p>

<p><code>$image</code> - вставляемое изображение. Экземпляр класса <code>\image\imagick\Image</code> или <code>\image\gd\Image</code>,</p>

<p><code>$x</code>, <code>$y</code> - координаты левого верхнего угла вставляемого изображения</p>

<p><code>$alpha</code> - прозрачность вставляемого изображения. 0 - полностью прозрачное. 100 - полностью непрозрачное.</p>

<p> </p>

<pre class="brush:php;">
$image-&gt;removeAnimation()</pre>

<p>Удаление анимации. <strong>Gd</strong> и так не поддерживает анимацию. При использовании <strong>Imagick</strong>, в изображении будет оставлен только первый кадр.</p>

<p> </p>

<pre class="brush:php;">
$image-&gt;resize($width = null, $height = null, string $filter = Image::FILTER_UNDEFINED)</pre>

<p>Изменение размера изображения.</p>

<p><code>$width</code>, <code>$height</code> - новые ширина и высота изображения. Могут указываться как целое число в пикселях (1920) или процент ('80%'). Если ширина или высота не указана (null), то ее значение будет расчитано пропорционально.</p>

<p><code>$filter</code> - фильтр применяемый для масштабирования. Одна из констант <code>\image\Image::FILTER_XXX</code>. <strong>GD</strong> не поддерживает фильтров и игнорирует этот параметер.</p>

<p> </p>

<pre class="brush:php;">
$image-&gt;rotate($angle, $background = null)</pre>

<p>Поворачивает изображение на указанное количество градусов</p>

<p> </p>

<pre class="brush:php;">
$image-&gt;strip()</pre>

<p>Удаляет EXIF данные из изображения. <strong>Gd</strong> удаляет эти данные в любом случае.</p>

<p> </p>

<pre class="brush:php;">
$image-&gt;thumbnail(
    $width, 
    $height, 
    string $resize = Image::THUMBNAIL_OUTBOUND, 
    bool $upscale = false, 
    string $filter = Image::FILTER_LANCZOS
)</pre>

<p>Создает миниатюру изображения</p>

<p><code>$width</code>, <code>$height</code> - новые ширина и высота изображения. Могут указываться как целое число в пикселях (1920) или процент ('80%'). Если ширина или высота не указана (null), то ее значение будет расчитано пропорционально.</p>

<p><code>$resize</code> - как создавать миниатюру. Одна из констант:</p>

<ul>
	<li><code>\image\Image::THUMBNAIL_OUTBOUND</code> - масштабирует изображение пропорционально таким образом, чтобы его ширина и высота были не меньшне указанных размеров. Если вторая сторона при этом превышает указанное значение - она обрезается.</li>
	<li><code>\image\Image::THUMBNAIL_INSET</code> - Исходное изображение масштабируется таким образом, чтобы оно полностью умещалось в размерах миниатюры (соотношение ширины и высоты изображения не меняется).    </li>
	<li><code>\image\Image::THUMBNAIL_HEIGHT</code> - Миниатюра масштабируется так, чтобы ее высота равнялась желаемой высоте (соотношение ширины и высоты изображения не меняется).    </li>
	<li><code>\image\Image::THUMBNAIL_WIDTH</code> - Миниатюра масштабируется так, чтобы ее ширина равнялась желаемой ширине (соотношение ширины и высоты изображения не меняется).</li>
</ul>

<p><code>$upscale</code> - увеливать изображение, если оно меньше указанных размеров.</p>

<p><code>$filter</code> - фильтр применяемый для масштабирования. Одна из констант <code>\image\Image::FILTER_XXX</code>. <strong>GD</strong> не поддерживает фильтров и игнорирует этот параметер.</p>

<p> </p>

<p> </p>

<p>Пример использования. Сделаем из исходного изображения миниатюру 160x160 и сохраним ее в формате jpeg:</p>

<pre class="brush:php;">
$image = Image::load('/path/to/image.heic');

// Сделаем миниатюру
$image-&gt;thumbnail(160, 160, Image::THUMBNAIL_OUTBOUND);

// Сохраним в формате JPEG
$image-&gt;save('/path/to/image_160x160.jpg', 80);

// Выгрузим изображение из памяти:
unset($image);</pre>

<p> </p>
]]></description>
			<pubDate>вт, 24 окт 2023 12:48:00 +0300</pubDate>
			<link><![CDATA[https://lily-software.com/free-scripts/cotonti-lib/image-bundle]]></link>
		</item>
	</channel>
</rss>