šŸŒŖ Image-Storm

Image Storm API

Image Storm Ć© uma API de ediĆ§Ć£o de imagens desenvolvida em Laravel 11, que permite a criaĆ§Ć£o e manipulaĆ§Ć£o de imagens de forma programĆ”tica. A API recebe um payload JSON com parĆ¢metros como dimensƵes, cor de fundo e componentes (textos, imagens em base64 ou URLs). A saĆ­da Ć© uma imagem PNG gerada com as especificaƧƵes fornecidas.

InstalaĆ§Ć£o

Siga os passos abaixo para instalar a aplicaĆ§Ć£o:

  1. Clone o repositĆ³rio:
  2. git clone https://github.com/vhratts/image-storm.git
        cd image-storm
  3. Instale as dependĆŖncias:
  4. composer install
  5. ConfiguraĆ§Ć£o do arquivo .env:
  6. Copie o arquivo de exemplo:

    cp .env.example .env

    Configure as variĆ”veis de ambiente, como APP_KEY e detalhes de conexĆ£o com o banco de dados.

  7. Gere a chave da aplicaĆ§Ć£o:
  8. php artisan key:generate
  9. ConfiguraĆ§Ć£o do servidor local:
  10. php artisan serve

A aplicaĆ§Ć£o estarĆ” acessĆ­vel em http://localhost:8000.

UtilizaĆ§Ć£o da API

Endpoint

POST /api-service/image-editor

ParĆ¢metros

A requisiĆ§Ć£o deve ser enviada no corpo como application/json e conter os seguintes parĆ¢metros:

  • sample (object): ConfiguraƧƵes principais da imagem.
    • width (int): Largura da imagem em pixels.
    • height (int): Altura da imagem em pixels.
    • background (string): Cor de fundo em hexadecimal.
  • components (array): Lista de componentes.
    • overlay (int): Define a ordem de sobreposiĆ§Ć£o (camadas).
    • position (object): PosiĆ§Ć£o do componente.
      • x (int): PosiĆ§Ć£o horizontal.
      • y (int): PosiĆ§Ć£o vertical.
    • size (object): Tamanho do componente.
      • width (int): Largura em pixels.
      • height (int): Altura em pixels.
    • collors (object): DefiniĆ§Ć£o de cores.
      • background (string|null): Cor de fundo em hexadecimal.
      • content (string): Cor do conteĆŗdo (texto).
    • content (object): ConteĆŗdo do componente.
      • type (string): Tipo de conteĆŗdo (text ou image/png).
      • content (string): Texto a ser exibido ou imagem (em Base64 ou URL).

Exemplo de Payload

{
        "sample": {
            "width": 300,
            "height": 720,
            "background": "#ffffff"
        },
        "components": [
            {
                "overlay": 0,
                "position": {
                    "x": 0,
                    "y": 0
                },
                "size": {
                    "width": 300,
                    "height": 100
                },
                "collors": {
                    "content": "#292929"
                },
                "content": {
                    "type": "text",
                    "content": "Texto no componente de imagem"
                }
            },
            {
                "overlay": 1,
                "position": {
                    "x": 300,
                    "y": 0
                },
                "size": {
                    "width": 300,
                    "height": 100
                },
                "content": {
                    "type": "image/png",
                    "content": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAA..."
                }
            }
        ]
    }

Exemplo de Uso com cURL

curl -X POST "http://localhost:8000/api-service/image-editor" \
    -H "Content-Type: application/json" \
    -d '{
        "sample": {
            "width": 300,
            "height": 720,
            "background": "#ffffff"
        },
        "components": [
            {
                "overlay": 0,
                "position": {
                    "x": 0,
                    "y": 0
                },
                "size": {
                    "width": 300,
                    "height": 100
                },
                "collors": {
                    "content": "#292929"
                },
                "content": {
                    "type": "text",
                    "content": "Texto no componente de imagem"
                }
            },
            {
                "overlay": 1,
                "position": {
                    "x": 300,
                    "y": 0
                },
                "size": {
                    "width": 300,
                    "height": 100
                },
                "content": {
                    "type": "image/png",
                    "content": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAA..."
                }
            }
        ]
    }'

ObservaƧƵes

A ordem de sobreposiĆ§Ć£o dos componentes depende do valor de overlay, onde nĆŗmeros mais altos indicam camadas superiores. Certifique-se de fornecer URLs vĆ”lidos ou strings de Base64 corretamente formatadas para que as imagens sejam renderizadas com sucesso.