CHANGELOG.md

# Changelog

All notable changes to this project will be documented in this file.

The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).

## 0.9.3 (2023-05-30)

* Enhancements
  * Added `limit/2` and `limit/3` to set pixel cache limits ([#112](https://github.com/elixir-mogrify/mogrify/pull/112))

* Bugfixes
  * Fix for `custom(image, "morphology", ...)` multi-word parameters ([#114](https://github.com/elixir-mogrify/mogrify/discussions/114))

## 0.9.2 (2022-06-24)

* Enhancements
  * Added `:format` option to `identify/2` ([#109](https://github.com/elixir-mogrify/mogrify/pull/109))

## 0.9.1 (2021-07-06)

* Bugfixes
  * Fixed `format/2` when saving without extension or saving in place
  * Avoid potential buffer corruption in `create/2`
  * Windows: Fixed `resize_to_limit/2` and faster command invocation

## 0.9.0 (2021-07-03)

* Breaking changes
  * `save/2` and `verbose/1` will use `convert` and `identify` executables instead of `mogrify`
    (except for `in_place: true` passed to `save/2`).
    This fixes issues related to ImageMagick 6.9.12-14 and 7.0.11-13 behavior changes,
    where the input file would get overwritten.

* Enhancements
  * Added `identify/1` which works similarly to `verbose/1`

* Bugfixes
  * `histogram/1` will parse fractional RGB values
  * Input file will no longer be overwritten (except for `in_place: true` passed to `save/2`)
    when using ImageMagick 6.9.12-14 or higher, and ImageMagick 7.0.11-13 or higher

## 0.8.0 (2020-08-10)

* Breaking changes
  * `create/2` and `save/2` will throw an error if the ImageMagick command fails

* Enhancements
  * Added configuration options for `mogrify` and `convert` executable paths. See README.

## 0.7.4 (2020-06-08)

* Enhancements
  * Added support for Plasma via `custom(image, "plasma", ...)` combined with `create/2`. See README for an example.

## 0.7.3 (2019-08-19)

* Bugfixes
  * Create intermediate missing directories instead of silently failing `save/2` and `create/2`
  * Fix for `custom(image, "annotate", ...)` with multi-word text
  * Skip Pango unit tests if Pango not installed

## 0.7.2 (2019-03-12)

* Enhancements
  * Added `quality/2`

* Bugfixes
  * Fix commands on Windows

## 0.7.0 (2018-12-14)

* Enhancements
  * Added `:buffer` and `:into` options to `create/2` (**not** `save/2`; see [#56](https://github.com/elixir-mogrify/mogrify/issues/56)).
    Allows writing to an in-memory buffer, or other Collectable of your choice, instead of a file.
  * Added `Image.buffer` field

* Bugfixes
  * Allow nil `Image.path` with `create/2`, helps when creating images from scratch with Pango

## 0.6.1 (2018-05-08)

* Fix `histogram/1` for RGBA images

## 0.6.0 (2018-04-17)

* Breaking changes
  * Requires Elixir 1.2 or higher

* Enhancements
  * Added support for Pango via `custom(image, "pango", ...)` combined with `create/2`. See README for an example.

## 0.5.6 (2017-08-12)

* Added `histogram/1`

## 0.5.5 (2017-07-27)

* Fix Erlang 19 compiler warning

## 0.5.4 (2017-01-20)

* Fix hang with options without params (such as `-auto-orient`)

## 0.5.3 (2017-01-07)

* Fix Elixir 1.4 warnings
* Fix test failures on OS X

## 0.5.2 (2016-12-31)

* Fix for spaces in file paths

## 0.5.1 (2016-11-19)

* Fix for `custom/3` handling of options and params with whitespace

## 0.5.0 (2016-10-14)

* New functions
  * `create/2` uses `convert` CLI tool to create a new image from scratch, without requiring a base image.
  See [mogrify_draw](https://github.com/zamith/mogrify_draw) for an example use case.

* Enhancements
  * `custom/3` supports "plus-form" arguments, e.g. `custom(image, "+raise", 50)`

## 0.4.0 (2016-08-23)

* Breaking changes
  * `Image.width` and `Image.height` are now integers instead of binaries

* Enhancements
  * `verbose/1` no longer modifies the input file
  * Added `Image.frame_count` integer field for animated images, set by `verbose/1`

## 0.3.3 (2016-08-01)

* `verbose/1` now sets the `Image.animated` field for images containing multiple frames

## 0.3.2 (2016-06-30)

* Fixed Elixir 1.3 compiler warnings

## 0.3.1 (2016-06-15)

* Added `gravity/2`, for example: `gravity(image, "Center")`

## 0.3.0 (2016-05-12)

* Breaking changes
  * Mogrify 0.3 now defers commands and bulk executes them when calling `save/2`. You must call `save/2` for any operations to take place.
  * `save(image)` by default creates a temporary file
  * `save(image, in_place: true)` gets the old behavior of overwriting the existing file
  * `save(image, path: "/some/destination.jpg")` lets you specify the path to write the new file

* New functions
  * `auto_orient/1` corresponding to `mogrify -auto-orient`
  * `custom/3` letting you run arbitrary commands, for example: `custom(image, "gaussian-blur", 5)`

* Bugfixes
  * Fixed `mix test` failures on Windows
  * Avoid dirty Git working directory when running `mix test`

* Misc
  * Mogrify is now licensed under the MIT License