Skip to content

pllsg96/thumb

Repository files navigation

Backend - compressor de imagens

Descrição

Projeto realizado com objetivo de realizar a compressão de uma imagem tendo como base uma determinada URL, gerando uma thumb e salvando também os metadados da imagem original em um banco de dados não relacional.

Tecnologias utilizadas

  • NestJs
  • Typescript
  • Express
  • Mongoose
  • MongoDb
  • Jimp
  • Uuid

Iniciando o projeto

# Faça o clone do projeto para a sua máquina
$ git clone https://github.com/pllsg96/thumb.git

# Após isto, acesse a pasta do projeto
$ cd thumb

# Em seu terminal digite o seguinte código paga instalar as dependências do projeto
$ npm install

Iniciando a aplicação

# Copie o codigo em seu terminal para subir os containers
$ docker-compose up -d

# Em seu terminal digite o deguinte código para iniciar o servidor
$ npm run start

Após os passos anteriores para utilizar a aplicação siga os seguintes passos

Recomendo a utilização de alguma plataforma para teste de APIs como as seguintes descritas

  • Insomnia
  • Thunderclient
  • Postman

Digite na url de alguma das plataformas citadas anteriormente a seguinte URL para o método POST

http://localhost:3000/image/save

em conjunto informe no objeto a ser passado a url da imagem a ser comprimida e o fator de compressão que deve variar entre 0 e 1

Exemplo

Para este exemplo de requisição

{
    "image": "https://assets.storage.trakto.io/AkpvCuxXGMf3npYXajyEZ8A2APn2/0e406885-9d03-4c72-bd92-c6411fbe5c49.jpeg",
    "compress": 0.9
}

A seguinte resposta foi obtida

{
    "localpath": {
        "original": "./path/to/imagem.jpg",
        "thumb": "./path/to/imagem_thumb.jpg"
    },
    "metadata": {
        "meta": {
            "startMarker": {
                "offset": 0
            },
            "tags": {
                "Make": "Apple",
                "Model": "iPhone 11",
                "Orientation": 1,
                "XResolution": 72,
                "YResolution": 72,
                "ResolutionUnit": 2,
                "Software": "16.1.1",
                "ModifyDate": 1668716039,
                "HostComputer": "iPhone 11",
                "TileWidth": 512,
                "TileLength": 512,
                "GPSLatitudeRef": "S",
                "GPSLatitude": -9.613122222222222,
                "GPSLongitudeRef": "W",
                "GPSLongitude": -35.7252,
                "GPSAltitudeRef": 0,
                "GPSAltitude": 56.46832101372756,
                "GPSSpeedRef": "K",
                "GPSSpeed": 0.2655744302651217,
                "GPSImgDirectionRef": "T",
                "GPSImgDirection": 162.76583850931678,
                "GPSDestBearingRef": "T",
                "GPSDestBearing": 162.76583850931678,
                "GPSHPositioningError": 7.849353822413682,
                "ExposureTime": 0.023809523809523808,
                "FNumber": 1.8,
                "ExposureProgram": 2,
                "ISO": 320,
                "DateTimeOriginal": 1668716039,
                "CreateDate": 1668716039,
                "undefined": "-03:00",
                "ShutterSpeedValue": 5.381182507010322,
                "ApertureValue": 1.6959938128383605,
                "BrightnessValue": -0.6750610904449875,
                "ExposureCompensation": -1.3275746571237175,
                "MeteringMode": 5,
                "Flash": 16,
                "FocalLength": 4.25,
                "SubjectArea": [
                    1996,
                    1499,
                    2206,
                    1387
                ],
                "SubSecTimeOriginal": "890",
                "SubSecTimeDigitized": "890",
                "ExifImageWidth": 3024,
                "ExifImageHeight": 4032,
                "SensingMethod": 2,
                "ExposureMode": 0,
                "WhiteBalance": 0,
                "FocalLengthIn35mmFormat": 26,
                "LensInfo": [
                    1.5399999618512084,
                    4.25,
                    1.8,
                    2.4
                ],
                "LensMake": "Apple",
                "LensModel": "iPhone 11 back dual wide camera 4.25mm f/1.8"
            },
            "imageSize": {
                "height": 4032,
                "width": 3024
            },
            "app1Offset": 24
        }
    }
}

Assim se é possível também ver o resultado das imagens pós compressão

About

Projeto realizado com objetivo de construir o backend de um compressor de imagens tendo como base URLs.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors