Skip to content

Releases: cshum/imagor

v1.1.4

27 Sep 14:17
Compare
Choose a tag to compare

What's Changed

  • fix(gcloudstorage): close reader on put by @cshum in #180
  • refactor(vips): disable filters option by @cshum in #182
  • fix(vips): disable vips-thumbnail for animated images by @cshum in #186
  • fix(server): handle server error logs by @cshum in #187
  • build(deps): bump cloud.google.com/go/storage from 1.26.0 to 1.27.0 by @dependabot in #185
  • feat(imagor): filter attachment(filename) by @cshum in #189
  • build(deps): bump github.com/fsouza/fake-gcs-server from 1.40.1 to 1.40.2 by @dependabot in #184
  • build(deps): bump github.com/aws/aws-sdk-go from 1.44.93 to 1.44.106 by @dependabot in #188
  • feat(vips): filter strip_exif() by @cshum in #181

Full Changelog: v1.1.3...v1.1.4

v1.1.3

18 Sep 06:20
Compare
Choose a tag to compare

Stability Release

What's Changed

  • feat(vips): create image from memory by @cshum in #170
  • fix(vips): remove finalizer by @cshum in #171
  • fix(vips): conditional vips_thumbnail fallback by @cshum in #172
  • fix(vips): fix premature end on save for storage by @cshum in #173
  • fix(vips): fix file context and cleanup by @cshum in #174
  • fix(imagor): fix blob reader close by @cshum in #175
  • fix(imagor): fix fanout reader concurrent buffer by @cshum in #176

Full Changelog: v1.1.0...v1.1.3

v1.1.0

09 Sep 12:00
Compare
Choose a tag to compare

Introducing imagorvideo

imagorvideo is a new initiative that brings video thumbnail capability with ffmpeg, built on the foundations of imagor v1.1.

Imagorvideo uses ffmpeg C bindings that extracts image thumbnail from video by attempting to select the best frame, then forwards to libvips to perform all existing image operations supported by imagor.

Check it out at https://github.com/cshum/imagorvideo

What's Changed

  • feat(imagor): preview mode by @cshum in #150
  • feat(imagor): ErrForward - forward params through series of processors by @cshum in #155
  • feat(imagor): blob.NewReadSeeker() by @cshum in #164
  • build(deps): bump go.uber.org/zap from 1.22.0 to 1.23.0 by @dependabot in #157
  • build(deps): bump github.com/fsouza/fake-gcs-server from 1.38.2 to 1.40.1 by @dependabot in #160
  • build(deps): bump github.com/aws/aws-sdk-go from 1.44.76 to 1.44.93 by @dependabot in #165
  • fix(vips): restrict image type for vips_thumbnail by @cshum in #166
  • test(vips): fit-in/resize with unspecified width/height by @cshum in #168
  • feat(imagor): Storage and Result Storage Path Style by @cshum in #154

Full Changelog: v1.0.3...v1.1.0

v1.0.3

21 Aug 17:08
Compare
Choose a tag to compare

What's Changed

  • #141 Add support for Heroku by @kkdai in #142
  • fix(imagor): return json for meta error by @cshum in #143
  • build: go 1.19 by @cshum in #144
  • fix(vips): fix metadata pages by @cshum in #145
  • fix(imagor): fix context error propagation by @cshum in #146
  • feat(imagor): conditional result key by @cshum in #147
  • feat(storage): stat context cache for file, s3, gcloud storage by @cshum in #149

New Contributors

Full Changelog: v1.0.2...v1.0.3

v1.0.2

17 Aug 01:51
Compare
Choose a tag to compare

Text Label Filter

label(text, x, y, size, color[, alpha[, font]])

Adds a text label to the image. It can be positioned inside the image with the alignment specified, color and transparency support:

  • text text label, also support url encoded text.
  • x horizontal position that the text label will be in:
    • Positive number indicate position from the left, negative number from the right.
    • Number followed by a p e.g. 20p means calculating the value from the image width as percentage
    • left,right,center align left, right or centered respectively
  • y vertical position that the text label will be in:
    • Positive number indicate position from the top, negative number from the bottom.
    • Number followed by a p e.g. 20p means calculating the value from the image height as percentage
    • top,bottom,center vertical align top, bottom or centered respectively
  • size - text label font size
  • color - color name or hexadecimal rgb expression without the “#” character
  • alpha - text label transparency, a number between 0 (fully opaque) and 100 (fully transparent).
  • font - text label font type

What's Changed

  • feat(vips): vips load from source alias by @cshum in #130
  • feat(imagor): improve process response concurrency by @cshum in #132
  • build(deps): bump go.uber.org/zap from 1.21.0 to 1.22.0 by @dependabot in #135
  • build(deps): bump github.com/aws/aws-sdk-go from 1.44.70 to 1.44.76 by @dependabot in #134
  • feat(vips): text label filter by @cshum in #139

Full Changelog: v1.0.1...v1.0.2

v1.0.1

13 Aug 16:18
Compare
Choose a tag to compare

What's Changed

  • fix(vips): handle vips_source_custom_new without seeker by @cshum in #128
  • fix(vips): fix error parsing for VipsForeignLoad by @cshum

Full Changelog: v1.0.0...v1.0.1

v1.0.0

10 Aug 06:52
80d690c
Compare
Choose a tag to compare

Streaming libvips

At the moment, all existing popular Go + libvips image applications (imgproxy, imaginary, bimg etc) bridge libvips through buffer. While these are all good with normal web images, the latency and memory overhead can be noticeable when working through large, raw images, as they are all loading the whole image buffer in memory, one step at a time.

Imagor v1 fully revamped the libvips binding, now implemented its streaming capability that enables parallel processing across Loader, Storage and Processor. This greatly increases network throughput especially with network sources like HTTPs, S3, GCS, by giving the ability to overlap processing pipelines.

Metadata and Exif

Imagor now provides metadata endpoint that extracts image info such as image format, dimensions and Exif metadata. With streaming in place, same goes for image Exif metadata. Imagor can try to retrieve data just enough to extract the header, without reading and processing the whole image in memory.

To use the metadata endpoint, add /meta right after the URL signature hash before the image operations. Example:

http://localhost:8000/unsafe/meta/fit-in/50x50/raw.githubusercontent.com/cshum/imagor/master/testdata/Canon_40D.jpg
{
  "format": "jpeg",
  "content_type": "image/jpeg",
  "width": 50,
  "height": 34,
  "orientation": 1,
  "pages": 1,
  "exif": {
    "ApertureValue": "368640/65536",
    "ColorSpace": 1,
    "ComponentsConfiguration": "Y Cb Cr -",
    "Compression": 6,
    "DateTime": "2008:07:31 10:38:11",
    // ...
    "WhiteBalance": 0,
    "XResolution": "72/1",
    "YCbCrPositioning": 2,
    "YResolution": "72/1"
  }
}

What's Changed

  • feat(vips): revamp libvips binding by @cshum
  • feat(vips): vips load image directly from file by @cshum
  • build(docker): fix docker build steps by @cshum
  • feat(vips): true streaming for libvips by @cshum
  • refactor(vips): context gc tracking by @cshum
  • build(deps): bump github.com/peterbourgon/ff/v3 from 3.2.0-rc.1 to 3.3.0 by @dependabot
  • build(deps): bump github.com/aws/aws-sdk-go from 1.44.66 to 1.44.70 by @dependabot
  • refactor(imagor): improve processor and storage concurrency by @cshum
  • feat(vips): exif metadata support by @cshum
  • refactor: simplify metadata architecture by @cshum

Full Changelog: v0.9.13...v1.0.0

v0.9.13

05 Aug 14:45
Compare
Choose a tag to compare

New Config Options

  -imagor-process-concurrency int
        Maximum number of image process to be executed simultaneously. Requests that exceed this limit are put in the queue. Set -1 for no limit (default -1)
  -imagor-process-queue-size int
        Maximum number of image process that can be put in the queue. Requests that exceed this limit are rejected with HTTP status 429. Set -1 for no limit (default -1)

What's Changed

  • fix(imagor): client canceled request handling by @cshum
  • build(actions): ghcr delete untagged images by @cshum
  • refactor(filestorage): cleanup redundant logic by @cshum
  • feat(imagor): process-queue-size by @cshum

Full Changelog: v0.9.12...v0.9.13

v0.9.12

04 Aug 11:25
Compare
Choose a tag to compare

Image Bombs Prevention

Imagor now checks the image type and its resolution before the actual processing happens. The image processing will be rejected if the dimensions are too big (you can set the max allowed image resolution using -vips-max-resolution), which protects from so called "image bombs”.

What's Changed

  • build(vips): auto commit golden files by @cshum in #96
  • build: cache libvips build on test by @cshum in #99
  • build(docker): Upgrade Go to 1.18.5 by @cshum
  • fix(vips): fix proportion out of bound by @cshum in #102
  • feat(vips): vips-max-resolution by @cshum in #104

Full Changelog: v0.9.11...v0.9.12

v0.9.11

03 Aug 02:48
Compare
Choose a tag to compare

What's Changed

  • fix(imagorpath): hash length for custom signer by @cshum in #95
  • build(deps): bump github.com/aws/aws-sdk-go from 1.44.61 to 1.44.66 by @dependabot in #93

Full Changelog: v0.9.10...v0.9.11