PHPackages                             m00nk/yii2-dynimage - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Image &amp; Media](/categories/media)
4. /
5. m00nk/yii2-dynimage

ActiveYii2-extension[Image &amp; Media](/categories/media)

m00nk/yii2-dynimage
===================

Dynamic image for Yii2

1.2.1(6y ago)31761MITPHPPHP &gt;=5.4.0

Since Oct 15Pushed 6y ago1 watchersCompare

[ Source](https://github.com/m00nk/yii2-dynimage)[ Packagist](https://packagist.org/packages/m00nk/yii2-dynimage)[ RSS](/packages/m00nk-yii2-dynimage/feed)WikiDiscussions master Synced today

READMEChangelogDependencies (2)Versions (9)Used By (0)

DynImage - компонент для динамической генерации изображений
-----------------------------------------------------------

[](#dynimage---компонент-для-динамической-генерации-изображений)

Задачи компонента:

- автоматически создавать уменьшенные копии исходного изображения требуемых размеров
- при повторном обращении, отдавать изображения вэб-сервером, без запуска скриптов

Внимание! Для работы должно быть установлено расширение ImageMagick.

#### Установка

[](#установка)

```
composer require m00nk/dynimage

```

#### Настройка приложения

[](#настройка-приложения)

```
'componemts' => [
	...
	'dynimage' => [
		'class' => 'm00nk\dynimage\DynImageComponent',
	],
	...
	'urlManager' => [
		...
		'rules' => [
			...
			'assets/dynimg/' => 'dynimage/get-image'
		]
	],
	...
],

'controllerMap' => [
	...
	'dynimage' => [
		'class' => 'm00nk\dynimage\controllers\ProcessController'
	],
	...
]

```

Компонент имеет несколько параметров:

- **cachePath** - путь относительно корня сайта к папке кэша изображений. По-умолчанию '/assets/dynimg'. Эта папка должна быть доступна из броузера.
- **sizes** - массив допустимых размеров изображений (ширина). Используется только при автоматическом определении ширины.
- **jpegQuality** - уровень качества для JPEG-файлов

Пример задания параметров через конфигурацию:

```
'componemts' => [
	...
	'dynimage' => [
		'class' => 'm00nk\dynimage\DynImageComponent',
		'jpegQuality' => 60,
		'sizes' => [50, 200, 800, 1400],
		'cachePath' => '/uploads/images/cache',
		'engineClass' => \Imagine\Gmagick\Imagine::class, // меняем графический движок
	],
	...
	'urlManager' => [
		...
		'rules' => [
			...
			'uploads/images/cache/' => 'dynimage/get-image'
		]
	],
	...
]
	...

```

Обратите внимание, что при смене папки кэша, нужно менять и правило в UrlManager, чтобы компонент мог правильно перехватывать запросы к несуществующим файлам.

Все необходимые для работы папки (включая папку кэша) компонент создает автоматически.

### Принцип работы

[](#принцип-работы)

- параметры изображения кодируются в имени файла. По ним компонент может определить, что именно нужно получить в результате.
- если требуемое изображение уже существует в папке кэша, то вэб-сервер просто отдает броузеру файл. Никакие скрипты при этом не запускаются.
- если требуемого изображения в папке кэша нет, то запрос перехватывается приложением. При этом компонент создает требуемое изображение, сохраняет его в кэше и отправляет в броузер.

#### Использование

[](#использование)

Есть два варианта использования:

- создание изображений с заранее известными размерами
- создание изображений с автоматическим вычислением ширины

##### Cоздание изображений с заранее известными размерами

[](#cоздание-изображений-с-заранее-известными-размерами)

Компонент позволяет получить URL изображения, используя заранее известные параметры результирующего изображения. Для этого используется метод `DynImageComponent::getUrl`:

```
echo Html::img(
	Yii::$app->dynimage->getUrl(
		// путь к исходному изображению относительно корня сайта
		'/uploads/images/my-photo.png',

		 // ширина результирующего изображения
		 320,

		 // высота будет вычислена автоматически с сохранением пропорций
		 null,

		 // на выходе получим JPEG-файл
		 'jpg'
	),
	['class' => 'css-avatar']
);

```

Код выше вставит на страницу HTML-тег вида

```

```

При первом обращении к файлу, броузер перенаправит запрос в компонент, который создаст файл требуемого размера и отправит его в броузер. При последующих обращениях, файл будет отдаваться вэб-сервером без обращения к компоненту.

##### Cоздание изображений с автоматическим вычислением ширины

[](#cоздание-изображений-с-автоматическим-вычислением-ширины)

Если необходимо, чтобы изображения создавались с автоматически вычисляемой шириной, нужно использовать метод `DynImageComponent::img`:

```
echo Yii::$app->dynimage->img(
	// путь к исходному изображению относительно корня сайта
	'/uploads/images/my-photo.png',

	 // на выходе получим JPEG-файл
	 'jpg',

	 // качество берем из настроек компонента
	 null,

	['class' => 'css-avatar']
);
```

Код выше создаст псевдо-тег `` с необходимыми параметрами и загрузит JavaScript, который сразу после загрузки страницы просканирует все такие теги и заменит их соответствующими HTML-тегами ![](). Для каждого такого тега будет вычислена ширина, исходя из ширины контейнера.

#### Замечания по работе

[](#замечания-по-работе)

При автоматическом вычислении ширины компонент создает изображения с шириной, округленной в большую сторону.

Например:

в настройках указаны размеры \[50, 400, 1200\], компонент создаст изображения шириной:

- 50 точек для всех контейнеров &lt;= 50 точек
- 400 точек для всех контейнеров &gt; 50 и &lt;= 400 точек
- 1200 точек для всех контейнеров &gt; 400 точек

#### Особенности nginx

[](#особенности-nginx)

Вэб-сервер nginx работает немного отлично от Apache, в частности при использовании настроек кэширования вида

```
location ~* \.(?:jpe?g|png|gif|webp|wbmp|xbm)$ {
    expires 7d;
    add_header Pragma public;
    add_header Cache-Control "public";
    gzip_vary on;
}

```

при отсутствии требуемого файла nginx **не будет** запускать приложение! Поэтому, при использовании nginx, нужно отключить кэширование файлов изображений в папке кэша, заданной в параметрах компонента.

###  Health Score

30

—

LowBetter than 62% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity15

Limited adoption so far

Community8

Small or concentrated contributor base

Maturity63

Established project with proven stability

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~160 days

Recently: every ~165 days

Total

8

Last Release

2425d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/67f057b565d9ba14262210b903dfa8f511445877b9baf1fa07041ac86f497dd5?d=identicon)[m00nk](/maintainers/m00nk)

---

Top Contributors

[![m00nk](https://avatars.githubusercontent.com/u/516574?v=4)](https://github.com/m00nk "m00nk (10 commits)")

### Embed Badge

![Health badge](/badges/m00nk-yii2-dynimage/health.svg)

```
[![Health](https://phpackages.com/badges/m00nk-yii2-dynimage/health.svg)](https://phpackages.com/packages/m00nk-yii2-dynimage)
```

###  Alternatives

[craftcms/cms

Craft CMS

3.6k3.6M2.9k](/packages/craftcms-cms)[noam148/yii2-image-resize

A Yii2 component for resizing images (on the fly)

1044.9k7](/packages/noam148-yii2-image-resize)[developit/yii2-jcrop

 yii2 image cropping extension

101.5k](/packages/developit-yii2-jcrop)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
