Skip to content

Releases: imazen/imageflow

v1.3.6-rc36

28 Apr 16:24
Compare
Choose a tag to compare
v1.3.6-rc36 Pre-release
Pre-release
  • Add maximum_deflate: true/false parameter to libpng and lodepng encoders in JSON. This uses a lot more CPU to make PNG files a couple percent smaller (cranks zlib compression up to 9).
  • Add corresponding png.max_deflate=true/false querystring command.
  • Fix encoder libpng { zlib_compression } JSON parameter so it works

v1.3.5-rc35 - Improved PNG file sizes for querystring commands

26 Apr 21:19
Compare
Choose a tag to compare

Four new querystring commands

  • Add png.quality=0..100 which triggers quantization/lossy PNG compression.
  • Add png.min_quality=0..100 which determines when to fallback to lossless PNG.
  • Add png.quantization_speed=1..11 (default 4) to determine how much time to spend compressing
  • Add png.libpng=true to switch back to libpng encoder (which produces larger files)

v1.3.4-rc34

24 Apr 20:24
Compare
Choose a tag to compare
v1.3.4-rc34 Pre-release
Pre-release

Fixes #158

v1.3.3-rc33 - Add --quiet command to imageflow_tool

23 Apr 15:51
Compare
Choose a tag to compare

imageflow_tool --quiet suppresses JSON output from being printed to STDOUT

v1.3.2-rc32

22 Apr 19:41
Compare
Choose a tag to compare
v1.3.2-rc32 Pre-release
Pre-release

Querystring commands now use the Mozjpeg encoder by default and produce smaller files at the expense of more CPU time. The &jpeg.turbo=true command can be used to restore the original behavior.

v1.3.0-rc30 - BREAKING changes to JSON API

18 Apr 16:46
Compare
Choose a tag to compare
  • Add mode=aspectcrop to ImageResizer commands and ConstrainMode::AspectCrop to JSON API for minimally cropping to the aspect ratio described by w and h
  • Fix ABI tests and improve function name reporting in said error messages
  • JSON BREAKING: copy_rect_to_canvas node: .width and .height are now .w and .h
  • JSON BREAKING: resample_2d node: .down_filter, up_filter, scaling_colorspace duplicate fields have been removed (they are now in .hints)
  • JSON BREAKING: constrain has been refactored

New Constrain JSON

"constrain" = {
  "mode"= [constraint mode]
  "w" = unsigned integer
  "h" = unsigned integer
  "gravity" = { "percentage" = {x: float, y: float }},
  "canvas_color" = (color value)
  "hints" = {
    resample_hints
  }
// Where [constraint mode] is one of these. Use the value in serde(rename) for JSON.

#[derive(Serialize, Deserialize, Clone, PartialEq, Debug)]
pub enum ConstraintMode {
    /// Distort the image to exactly the given dimensions.
    /// If only one dimension is specified, behaves like `fit`.
    #[serde(rename = "distort")]
    Distort,
    /// Ensure the result fits within the provided dimensions. No upscaling.
    #[serde(rename = "within")]
    Within,
    /// Fit the image within the dimensions, upscaling if needed
    #[serde(rename = "fit")]
    Fit,
    /// Ensure the image is larger than the given dimensions
    #[serde(rename = "larger_than")]
    LargerThan,
    /// Crop to desired aspect ratio if image is larger than requested, then downscale. Ignores smaller images.
    /// If only one dimension is specified, behaves like `within`.
    #[serde(rename = "within_crop")]
    WithinCrop,
    /// Crop to desired aspect ratio, then downscale or upscale to fit.
    /// If only one dimension is specified, behaves like `fit`.
    #[serde(rename = "fit_crop")]
    FitCrop,
    /// Crop to desired aspect ratio, no upscaling or downscaling. If only one dimension is specified, behaves like Fit.
    #[serde(rename = "aspect_crop")]
    AspectCrop,
    /// Pad to desired aspect ratio if image is larger than requested, then downscale. Ignores smaller images.
    /// If only one dimension is specified, behaves like `within`
    #[serde(rename = "within_pad")]
    WithinPad,
    /// Pad to desired aspect ratio, then downscale or upscale to fit
    /// If only one dimension is specified, behaves like `fit`.
    #[serde(rename = "fit_pad")]
    FitPad,
}

Where [resample hints] includes

    pub sharpen_percent: Option<f32>,
    pub down_filter: Option<Filter>,
    pub up_filter: Option<Filter>,
    pub scaling_colorspace: Option<ScalingFloatspace>,
    pub background_color: Option<Color>,
    pub resample_when: Option<ResampleWhen>,
    pub sharpen_when: Option<SharpenWhen>

v1.2.2-rc29

17 Apr 21:17
Compare
Choose a tag to compare
v1.2.2-rc29 Pre-release
Pre-release

Add region { x1,y1,x2,y2, background_color} and region_percent{x1,y1,x2,y2, background_color} commands that crop and/or expand the canvas to provide a region of exactly the given rectangle.

v1.2.1-rc28

17 Apr 13:14
Compare
Choose a tag to compare
v1.2.1-rc28 Pre-release
Pre-release

ImageResizer4 commands: I've added the f.sharpen_when=downscaling|sizediffers|always command to let you control when sharpening happens in combination with f.sharpen=0..100 This should let you tune the sharpness of text/vector resizing to your liking. The default behavior is tuned for photographs, not vectors.

v1.2.0-rc20

14 Apr 13:42
Compare
Choose a tag to compare
v1.2.0-rc20 Pre-release
Pre-release
Update github token in appveyor

v1.2.0-rc19

14 Apr 13:01
Compare
Choose a tag to compare
v1.2.0-rc19 Pre-release
Pre-release

This release includes 244 commits, including

  • WebP support, both read and write #194
  • Better png-> gif conversion #190
  • No more crashes on malformed or CMYK jpegs #188