Releases: cshum/imagor
v1.1.4
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
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
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
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
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 sizecolor
- color name or hexadecimal rgb expression without the “#” characteralpha
- 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
v1.0.0
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
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
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
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