Skip to content
/ imager Public

Микро сервис для генерации и компрессии миниатюр к картинкам на лету

License

Notifications You must be signed in to change notification settings

pkg-ru/imager

Repository files navigation

Imager (Imager Client)

WEB Микро сервис для генерации и компрессии миниатюр к картинкам на лету

Сервис принимает запрос на миниатюру (ассет) — генерирует его из исходного файла и сохраняет на диск в указанное место.
При повторных запросах того же ассета сервис отдает ранее созданный, сжатый файл.

Например, вы хотите сжать и уменьшить картинку. Для этого нужно сгенерировать ссылку (ассет) на картинку — при запросе которой сервис Imager на лету создаст сжатую миниатюру и вернет пользователю.

Исходник: example.com/my_image.gif (не обязательно должен быть доступен из web)
Ассет на миниатюру: example.com/my_image/DqcDCgCWSwoAlg.webp


Запуск

Для запуска Imager можно использовать Docker. Воспользуйтесь следующими командами:

Запуск с Docker

docker run -d -p 80:80 --volume ".:/app/example:rw" altrap/imager:v0.0.2

Запуск с использованием docker-compose

services:
  imager:
    image: altrap/imager:v0.0.2
    restart: always
    stop_signal: INT
    stop_grace_period: 5s
    ports:
      - 80:80
      - 443:443
    volumes:
      - ./:/app/example:rw
    working_dir: /app
    networks:
      - default

Примечание: Настройки микро-сервиса можно указать в файле setting.yaml. Вы можете переопределить настройки, создав файл setting-local.yaml рядом с основным файлом конфигурации.


Пример настройки микро-сервиса с Nginx

Если вы хотите использовать Nginx для проксирования запросов, выполните следующие шаги.

Запуск с Docker

docker run -d -p 8181:80 --volume ".:/app/example:rw" --restart=always altrap/imager:v0.0.2

Конфигурация Nginx

Файлы должны быть доступны для Nginx. Если файл не существует, запрос будет перенаправлен на микро-сервис, который создаст превью изображения.

Пример конфигурации для Nginx:

server {
    # ...
    # Обработка картинок: если файл не существует, проксируем запрос на Imager
    location ~ \.(jpg|jpeg|gif|png|apng|jpe|jif|jfif|jfi|webp|avif|heif|heic)$ {
        try_files $uri @imager;
    }

    location @imager {
        proxy_pass http://imager$uri$is_args$args;
        proxy_set_header Host $host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
    }
    # ...
}

upstream imager {
    server http://127.0.0.1:8181;
}

Примечание: Imager можно использовать как самостоятельный сервер. Для этого необходимо установить зависимости:


Используйте библиотеки Imager Client в своих проектах для формирования ссылок на миниатюры

Вы можете использовать различные языки программирования для работы с Imager.

Для установки клиента Golang:

go get github.com/pkg-ru/imager-client

Для установки клиента PHP:

composer require pkg-ru/imager-client

Для установки клиента JavaScript (или TypeScript):

npm i imager-client

Для установки клиента Python:

pip install imager-client

About

Микро сервис для генерации и компрессии миниатюр к картинкам на лету

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published