Releases: imazen/imageflow
v1.3.6-rc36
- 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
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
Fixes #158
v1.3.3-rc33 - Add --quiet command to imageflow_tool
imageflow_tool --quiet suppresses JSON output from being printed to STDOUT
v1.3.2-rc32
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
- Add
mode=aspectcrop
to ImageResizer commands andConstrainMode::AspectCrop
to JSON API for minimally cropping to the aspect ratio described byw
andh
- 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
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
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
Update github token in appveyor