Skip to content

Releases: cshum/imagor

v0.8.18

20 May 14:49
Compare
Choose a tag to compare

PDF Thumbnail Support

Imagor now supports generating PDF Thumbnail. Example:

http://localhost:8000/unsafe/fit-in/200x200/filters:fill(cyan)/http://www.africau.edu/images/default/sample.pdf

Config File

Configuration may be specified in a .env configuration file and referenced with the -config flag.

PORT=8000
IMAGOR_SECRET=mysecret
AWS_ACCESS_KEY_ID=...
AWS_SECRET_ACCESS_KEY=...
AWS_REGION=...
imagor -config path/to/config.env
imagor -config path/to/config.env

What's Changed

Full Changelog: v0.8.17...v0.8.18

v0.8.17

18 May 17:51
Compare
Choose a tag to compare

Experimental AVIF Conversion

Output AVIF format automatically if browser supports, based on Accept request header check for image/avif (thanks @lorenries)

  -imagor-auto-avif
        Output Avif format automatically if browser supports

However AVIF encoder at this stage is very slow and image size is not optimal compare to the WebP counterpart.

GitHub Container Registry

Starting from v0.8.17, Imagor Docker image is now available at Github Container Registry with multi-CPU architecture support.

Quick Start

docker run -p 8000:8000 ghcr.io/cshum/imagor:v0.8.17 -imagor-unsafe -imagor-auto-webp

What's Changed

  • Add support for avif and auto avif by @lorenries in #52
  • Update Go to 1.18 by @bcspragu in #50
  • build: GitHub Container Registry publish actions

New Contributors

Full Changelog: v0.8.16...v0.8.17

v0.8.16

08 Apr 12:29
Compare
Choose a tag to compare

Automatic WebP Conversion

Output WebP format automatically if browser supports, based on Accept request header check for image/webp

  -imagor-auto-webp
        Output WebP format automatically if browser supports

Base Path Redirect URL

Ability to configure URL for redirection on base path /

  -imagor-base-path-redirect string
        URL to redirect for Imagor / base path e.g. https://www.google.com

What's Changed

  • feat(imagor): base path redirect option by @cshum in #43 #40
  • refactor(httploader): HTTP Loader default accepts image/* by @cshum in #42
  • feat(imagor): output WebP format automatically if browser supports by @cshum in #41 #39

Full Changelog: v0.8.15...v0.8.16

v0.8.15

13 Mar 14:22
Compare
Choose a tag to compare

Google Cloud Storage Support

Imagor now supports Google Cloud Storage for Loader, Storage and Result Storage (thanks @srlk).

Docker Compose Example

version: "3"
services:
  imagor:
    image: shumc/imagor:latest
    volumes:
      - ./googlesecret:/etc/secrets/google
    environment:
      PORT: 8000
      IMAGOR_SECRET: mysecret # secret key for URL signature
      GOOGLE_APPLICATION_CREDENTIALS: /etc/secrets/google/appcredentials.json # google cloud secrets file

      GCLOUD_LOADER_BUCKET: mybucket # enable loader by specifying bucket
      GCLOUD_LOADER_BASE_DIR: images # optional

      GCLOUD_STORAGE_BUCKET: mybucket # enable storage by specifying bucket
      GCLOUD_STORAGE_BASE_DIR: images # optional

      GCLOUD_RESULT_STORAGE_BUCKET: mybucket # enable result storage by specifying bucket
      GCLOUD_RESULT_STORAGE_BASE_DIR: images/result # optional
      GCLOUD_RESULT_STORAGE_ACL: publicRead # optional - see https://cloud.google.com/storage/docs/json_api/v1/objects/insert
    ports:
      - "8000:8000"

What's Changed

  • Google Cloud Storage support by @srlk in #33
  • fix: rename -http-loader-forward-all-headers to -http-loader-forward-client-headers #36

New Contributors

  • @srlk made their first contribution in #33

Full Changelog: v0.8.12...v0.8.15

v0.8.12

16 Feb 07:02
Compare
Choose a tag to compare

Crop params in percentage

Imagor now supports cropping image by percentage float params. Useful for cropping image when image size is not known beforehand. (thanks @pletessier )

Example:

http://localhost:8000/unsafe/0.1x0.2:0.8x0.9/filters:fill(cyan)/raw.githubusercontent.com/cshum/imagor/master/testdata/dancing-banana.gif

dancing-banana

What's Changed

  • Crop params in percentage by @pletessier in #28
  • feat(vips): float support for watermark position
  • fix(vips): crop animated height handling and cleanup
  • fix(imagor): neglect warn log for result loader error

New Contributors

Full Changelog: v0.8.10...v0.8.12

v0.8.10

12 Feb 17:20
Compare
Choose a tag to compare

Expiration support for File & S3, Storage & Result Storage

New configuration options:

  -file-storage-expiration duration
        File Storage expiration duration e.g. 24h. Default no expiration
  -file-result-storage-expiration duration
        File Result Storage expiration duration e.g. 24h. Default no expiration
  -s3-storage-expiration duration
        S3 Storage expiration duration e.g. 24h. Default no expiration
  -s3-result-storage-expiration duration
        S3 Result Storage expiration duration e.g. 24h. Default no expiration

Changes

  • feat(storage): s3 and file storage expiration support
  • refactor(imagorpath): Normlize add escapeByte func
  • build: update govips

v0.8.9

04 Feb 18:04
Compare
Choose a tag to compare

Animation support for repeated watermarks

Example

http://localhost:8000/unsafe/fit-in/200x150/filters:fill(cyan):watermark(raw.githubusercontent.com/cshum/imagor/master/testdata/dancing-banana.gif,repeat,bottom,0,40,40)/raw.githubusercontent.com/cshum/imagor/master/testdata/dancing-banana.gif

dancing-banana (6)

Changes

  • feat(vips): animated repeated watermark support
  • feat(imagor): imagor process concurrency semaphore
  • feat(vips): new proportion(percentage) filter
  • feat(vips): new crop(top,left,right,bottom) filter
  • fix(imagor) IsPNG should call readAllOnce
  • feat: add s3 force path style option
  • fix(imagor): move semaphore before load storage

v0.8.6

03 Feb 18:21
Compare
Choose a tag to compare

Introducing frames filter

  • frames(n[, delay]) set the number of frames to repeat for animation with gif or webp. Otherwise, stack all the frames vertically
    • n number of frames to repeat
    • delay frames delay in milliseconds, default 100

Frames filter allows you to control number of frames and animation speed. It also allows animating a static image in conjunction with a gif watermark. Example:

http://localhost:8000/unsafe/fit-in/200x200/filters:fill(white):frames(8,150):watermark(raw.githubusercontent.com/cshum/imagor/master/testdata/dancing-banana.gif,center,bottom):format(gif)/raw.githubusercontent.com/cshum/imagor/master/testdata/gopher.png

gopher

Changes

  • feat(vips): frames filter
  • fix(vips): watermark missing args
  • build: update vips to v8.12.2

v0.8.5

30 Jan 17:03
Compare
Choose a tag to compare
  • feat(vips): added animated watermark support
  • feat(vips): aded left-top and right-bottom padding support, using the new URL syntax GxH:IxJ

Example:

http://localhost:8000/unsafe/300x0/0x20:100x20/filters:fill(yellow):watermark(raw.githubusercontent.com/cshum/imagor/master/testdata/dancing-banana.gif,-30,10,0,50,50):watermark(raw.githubusercontent.com/cshum/imagor/master/testdata/dancing-banana.gif,-10,-10,0,50,50)/raw.githubusercontent.com/cshum/imagor/master/testdata/nyan-cat.gif

nyan-cat

v0.8.1

28 Jan 16:19
Compare
Choose a tag to compare

Introducing Animation Support

Imagor is rewritten to support animation for various common operations. The maximum of animated image frames can be configured using cli arguments:

 -vips-max-animation-frames int
        VIPS maximum of animated image frames to be processed. Set 1 to disable animation, -1 for unlimited. (default -1)

original image

https://raw.githubusercontent.com/cshum/imagor/master/testdata/dancing-banana.gif

dancing-banana

fit-in, fill and watermark example:

http://localhost:8000/unsafe/fit-in/200x150/filters:fill(yellow):watermark(raw.githubusercontent.com/cshum/imagor/master/testdata/gopher-front.png,repeat,bottom,0,40,40)/raw.githubusercontent.com/cshum/imagor/master/testdata/dancing-banana.gif

dancing-banana

crop and fill example:

http://localhost:8000/unsafe/30x40:100x150/filters:fill(cyan)/raw.githubusercontent.com/cshum/imagor/master/testdata/dancing-banana.gif

dancing-banana (2)