PHPackages                             techart/image-service - 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. techart/image-service

ActiveLibrary

techart/image-service
=====================

Provider to libraries for working with images

1.1.1(2y ago)0299↓100%Apache-2.0PHPPHP ^8.2

Since May 30Pushed 2y ago1 watchersCompare

[ Source](https://github.com/techart/image-service)[ Packagist](https://packagist.org/packages/techart/image-service)[ RSS](/packages/techart-image-service/feed)WikiDiscussions main Synced 1mo ago

READMEChangelogDependencies (6)Versions (15)Used By (0)

Сервис по обработке изображений
===============================

[](#сервис-по-обработке-изображений)

Сервис представляет собой адаптер для обработки, сохранения, получения и удаления картинок.

Стандарнно имеет 2 менеджров по работе с изображениями:

- `InterventionImageManager`, работает с библиотекой `intervention/image` поддерживает драйвера `imagick` и `gd`
- `GumletImageResizeManager`, работает с библиотекой`gumlet/php-image-resize` поддерживает только `gd` драйвер

Менеджеры представляют собой класс адаптер к библиотекам, для написания собстевнного менеджера необходимо реализовать интерфейс `ImageManagerContract`

Так же есть 2 класса по работе с файловой системой `StandardStorage` и `LaravelStorage`(для проектов на laravel), при желании можно написать собственный, главное не забыть реализовать интерфейс `StorageContract`

Классы, реализующие `StorageContract`, представляют собой управление файловой системой, что необходимо для создания директорий, получения пути до файла и т.д

Возможности
===========

[](#возможности)

- Конвертировать изображения в разные форматы, зависит от выбранного менеджера.
- Изменять размер изображений, методы так же зависят от выбранного менеджера.
- Удалять созданные изображаения

Как использовать
================

[](#как-использовать)

Для использования необходимо выбрать класс менеджреа и класс по работе с файловой системой, задать конфигурационный массив и получить сущность класса ImageService.

Конфиг
======

[](#конфиг)

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

Может иметь следущие ключи: `'resize' | 'format' | 'method' | 'quality'`

Ключ `quality` явяется не обязательным

Ключ `resize` моежт быть как массивом, содрежащим доступные размеры, например:

```
[
    '200x200',
    '200x0',
    '0x200',
    '1200x369'
]

```

А так же может быть строкой, со значением `*`, что будет убирать ограничение на доступные размеры

Основные объекты для взаимодействия
===================================

[](#основные-объекты-для-взаимодействия)

Объект `\Techart\ImageService\Service`
--------------------------------------

[](#объект-techartimageserviceservice)

Основной класс управления, предаставляющий доступ к объектам изменения изображения и работе с уже созданными картинками.

```
$manager = new \Techart\ImageService\Managers\InterventionImageManager();
$storage = \Techart\ImageService\Storages\StandardStorage::getInstance();
$config = [
    'sizes' => '*',
    'format' => [
        'webp',
        'jpg',
        'jpeg',
        'png',
        'gif',
    ],
    'methods' => [
        'resize',
        'crop',
        'fit',
    ]
];

$service = \Techart\ImageService\Service::getInstance($manager, $storage, $config);
```

Объект `\Techart\ImageService\Storage`
--------------------------------------

[](#объект-techartimageservicestorage)

Представляет собой класс для получения и удаления созданых изображений.

Данный класс возвращает метод `storage` объекта `\Techart\ImageService\Service`. В метод необходимо передать оносительный путь оригинальной картинки

Класс имеет следующий набор методов

- `haveModifyImages` - возвращает `true` или `false` в зависимости от того, есть ли модифицированные копии оригинально изображения
- `getOriginalImage` - возвращает массив, содержащий пути всех модифицированных копий оригинально изображения
- `delete` - удаляет все модифицированные копии оригинально изображения, и само оригинальное изображение. Для того, что бы не удалить оригинальное изображение передайте `false` в качестве аргумента при вызове метода

Объект `\Techart\ImageService\Processor`
----------------------------------------

[](#объект-techartimageserviceprocessor)

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

Данный класс возвращает метод `modify` объекта `\Techart\ImageService\Service`.

Выполнение манипуляций происходит после вызова метода `process`, который вернет сущность класса `\Techart\ImageService\Paths`, который предоставляет доступ к информации, url и пути расположения оригинального и нового изображения.

Объект `\Techart\ImageService\Paths`
------------------------------------

[](#объект-techartimageservicepaths)

Возвращается в результате работы метода `process` объекта `\Techart\ImageService\Processor`. Имеет следующий набор методов

- `getInfo` - возвращает массив с данными об изображении, имеет следующую структуру:

```
    [
        'dirname' => 'Директория картинки',
        'basename' => 'Имя картинки вместе с раширением',
        'extension' => 'Расширение картинки',
        'filename' => 'Имя картинки',
        'real_path' => 'Абсолютный путь картинки',
        'path' => 'Относительный путь картинки',
        'mime' => 'Расширение картинки в формате mime',
        'url' => 'URL по которому картинка будет доступена',
        'size' => [
            'w' => Ширина картинки,
            'h' => Высота картинки,
            'string' => Строка вида width="{Ширина}" height="{Высота}",
        ],
    ]

```

- `getUrl` - возвращает URL по которому картинка будет доступена
- `getPath` - возвращает абсолютный путь картинки

Так же существуют аналогичные методы для оригинального изображения, например, `getOriginalUrl`

**Пример работы непосредственно с изображением**

Пример работы:
==============

[](#пример-работы)

> Важно, путь до оригнальной картинки должен быть относительный

Модификация картинок
--------------------

[](#модификация-картинок)

Пример работы, где параметры для обрабокти устанавливаются с помощью методов класса `\Techart\ImageService\Processor`:

```
    $imageUrl = $service->modify('путь до оригинальной картинки')
        ->setQuality(95)
        ->setSizes('800x600')
        ->setFormat('webp')
        ->setMethod('fit')
        ->process()
        ->getUrl()
```

Пример работы, где параметры для обрабокти передаются массивом с следущими ключами:

- resize - ресайз
- quality - качество
- format - формат
- method - метод, по умолчанию resize

```
$imageUrl = $service->modify('путь до оригинальной картинки', [
    'resize' => '400x0',
    'format' => 'webp',
    'quality' => 80,
    'method' => 'fit'
])->process()->getUrl()
```

Пример работы, где параметры для обрабокти передаются строкой

- /r - ресайз
- /q - качество
- /f - формат
- /m - метод, по умолчанию resize(подходит в 90% случаев)

```
$imageUrl = $service->setup('путь до оригинальной картинки', '/r/640x480/r/f/webp/f/q/80/q/m/fit/m')
    ->process()
    ->getUrl();
```

Удаление изображений
--------------------

[](#удаление-изображений)

Не забудьте, при необходимости(удаление записи в бд, или обновления картинки и пр.), удалить изображения

Для этого есть объект `\Techart\ImageService\Storage` и его метод `delete()`, который удаляет все изображения связанные с оригиналом(включая оригинал).

Что бы не удалить оригинал передайте `false` первым аргументом

**Пример:**

```
$originalImage = 'путь до оригинальной картинки';

$storage = $service->storage($originalImage);

if ($storage->haveModifyImages()) {
    $storage->delete(false);
}
```

###  Health Score

32

—

LowBetter than 71% of packages

Maintenance31

Infrequent updates — may be unmaintained

Popularity13

Limited adoption so far

Community7

Small or concentrated contributor base

Maturity64

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 ~24 days

Total

14

Last Release

759d ago

Major Versions

0.0.7 → 1.0.02024-01-17

### Community

Maintainers

![](https://www.gravatar.com/avatar/f53cb65e730c7f64dd792c621abd68d1252fb3e608720919a368ce65799eb826?d=identicon)[techart](/maintainers/techart)

---

Top Contributors

[![techart](https://avatars.githubusercontent.com/u/243578?v=4)](https://github.com/techart "techart (1 commits)")

###  Code Quality

TestsPHPUnit

### Embed Badge

![Health badge](/badges/techart-image-service/health.svg)

```
[![Health](https://phpackages.com/badges/techart-image-service/health.svg)](https://phpackages.com/packages/techart-image-service)
```

###  Alternatives

[illuminate/pipeline

The Illuminate Pipeline package.

9446.6M210](/packages/illuminate-pipeline)[illuminate/pagination

The Illuminate Pagination package.

10532.5M855](/packages/illuminate-pagination)[spatie/laravel-prometheus

Export Laravel metrics to Prometheus

2651.3M6](/packages/spatie-laravel-prometheus)[flarum/core

Delightfully simple forum software.

211.3M1.9k](/packages/flarum-core)[pressbooks/pressbooks

Pressbooks is an open source book publishing tool built on a WordPress multisite platform. Pressbooks outputs books in multiple formats, including PDF, EPUB, web, and a variety of XML flavours, using a theming/templating system, driven by CSS.

44643.1k1](/packages/pressbooks-pressbooks)[api-platform/laravel

API Platform support for Laravel

59126.4k5](/packages/api-platform-laravel)

PHPackages © 2026

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