Skip to content

Releases: minimagick/minimagick

v5.0.1

24 Jul 08:32
4dfe121
Compare
Choose a tag to compare
  • MiniMagick::Image#write doesn't delete the internal tempfile anymore, which restores use cases like:

    image = MiniMagick::Image.open("...")
    image.resize("500x500")
    image.write("foo.jpg")
    image.blur
    image.write("bar.png")
  • Prevented MiniMagick::Image#to_ary being called by ruby in certain cases, such as [image].flatten(1).

v5.0.0

08 Jul 18:23
bbb9619
Compare
Choose a tag to compare

Improvements

  • New class method shorthands were added for the tool API:

    # BEFORE
    MiniMagick::Tool::Convert.new { |convert| ... }
    MiniMagick::Tool::Identify.new { |convert| ... }
    # ...
    
    # AFTER
    MiniMagick.convert { |convert| ... }
    MiniMagick.identify { |identify| ... }
    # ...
  • Image#write now deletes the underlying tempfile if Image.open was used, instead of relying on the tempfile to eventually be garbage collected.

Backwards compatibility

  • Removed official GraphicsMagick support. GraphicsMagick can be used by setting cli_prefix:

    MiniMagick.configure do |config|
      config.cli_prefix = "gm"
    end

    Some features won't be supported, such as MiniMagick.timeout (GraphicsMagick doesn't support time limits), Image#data (GraphicsMagick doesn't support JSON image details) and Image#exif (returns different format).

    As a result, MiniMagick.cli and MiniMagick.processor configuration has been removed as well.

  • MiniMagick::Image and MiniMagick.convert now use magick instead of the deprecated magick convert on ImageMagick 7. This should be backwards compatible, but there might be small differences in options and behavior.

  • Removed deprecated posix-spawn shell backend, along with MiniMagick.shell_api configuration.

    Ruby 2.x has long used vfork, so there is no performance advantage of using posix-spawn. Additionally, Ruby 3.x has switched to non-blocking pipes, which should resolve deadlocks people experienced with Open3. See #558 for more details.

  • Removed obsolete Image#run_command.

  • Removed deprecated Image#mime_type, as it wasn't accurate.

    MIME type from file content should be determined either using Marcel or MimeMagic, or mime-types or MiniMime using Image#type.

  • The MiniMagick::Tool::* classes have been deprecated in favor of the class-level interface.

  • The MiniMagick.timeout configuration now uses the native ImageMagick timeout environment variable $MAGICK_TIME_LIMIT. This variable doesn't support timeouts lower than 1 second.

  • The MiniMagick.whiny configuration has been renamed to MiniMagick.errors.

  • Images are no longer automatically validated on Image.open, Image.read or Image.create.

  • The deprecated Image#details method has been removed in favor of the more reliable Image#data.

  • The Image#respond_to_missing? method has been removed, meaning that Image#respond_to? will return false for ImageMagick option methods.

    As a result, the undocumented MiniMagick::Tool.option_methods method has been removed as well, along with the no-op MiniMagick.reload_tools.

  • Removed the obsolete MiniMagick.processor_path configuration, which as mostly an alias for MiniMagick.cli_path.

  • Removed the deprecated MiniMagick.debug configuration in favor of MiniMagick.logger.level = Logger::DEBUG.

  • Removed the unused MiniMagick.validate_on_write configuration.

  • Additional Pathname#open or URI#open options for Image.open need to be passed in as keyword arguments instead of a hash.

v4.13.2

08 Jul 09:13
eed76bf
Compare
Choose a tag to compare
  • Silence convert deprecation warning in latest version of ImageMagick 7.

v4.13.1

15 Jun 10:18
58a6a5e
Compare
Choose a tag to compare
  • Revert an optimization to save an identify call when retrieving image information by doing this work while validating on create, as this caused validation to hang for some SVG files.

v4.13.0

13 Jun 21:04
ca8d406
Compare
Choose a tag to compare
  • Warnings about convert command being deprecated on ImageMagick 7 are now ignored.

    The next major version of MiniMagick will switch to using magick on IM7, as it might not be fully compatible with magick convert.

  • If processing images is returning warnings (e.g. TIFF images tend to do that), but they're otherwise fine, you can prevent MiniMagick from forwarding warnings to standard error:

    MiniMagick.configure do |config|
      config.warnings = false
    end
  • When the ImageMagick subprocess has been abruptly killed by the operating system (e.g. OOM kill), in which case the exit status will be unknown, MiniMagick will now handle this gracefully.

  • When validating the image, the cheap info will now be automatically stored on the MiniMagick::Image object, so a subsequent call to #type, #width, #height, #dimensions, #size or #human_size will not call identify again.

  • The posix-spawn shell backend has been deprecated (see #558).

    Ruby uses vfork since Ruby 2.2, so posix-spawn doesn't provide performance benefits on relevant Ruby versions anymore. Additionally, Ruby 3 switched to non-blocking pipes by default, which should hopefully resolve deadlocks with open3 (see #347 and #437). Due to this change, posix-spawn is currently incompatible with Ruby 3.

  • MiniMagick::Image#mime_type has been deprecated, due to returning incorrect MIME type for formats not starting with image/*.

    ImageMagick does have a way to return the MIME type, but it requires reading the whole image, which is significantly slower. It's recommended to use Marcel or MimeMagic for determining MIME type from magic header. Alternatively, you can use mime-types or MiniMime for obtaining MIME type from file extension or from MiniMagick::Image#type.

  • Ruby 2.3+ is now required.

v4.12.0

07 Dec 08:55
2a4d0fc
Compare
Choose a tag to compare
  • Added new tmpdir configuration, which defaults to Dir.tmpdir (#541)
    MiniMagick.configure do |config|
      config.tmpdir = File.join(Dir.tmpdir, "/my/new/tmp_dir")
    end
  • Don't leave temporary files lying around when MiniMagick::Image#format failed (#547)
  • Replace File.exists? with File.exist?, which should fix Ruby 3.2 compatibility (#550)
  • Fixed a case where the log could not be parsed correctly when there were multiple lines (#540)
  • Added status to the exception message when the ImageMagick command fails (#542)
  • Allow passing format to Image#get_pixels so we can request "RGBA" pixels (#537)
  • Suppress warning to ambiguous argument (#529)
  • Use Thread#join with a timeout argument instead of the Timeout standard library (#525)

v4.11.0

06 Nov 16:24
Compare
Choose a tag to compare
  • Fix fetching metadata when there are GhostScript warnings (#522)
  • Fixed some method redefined warnings (#505)
  • Added MiniMagick::Image.get_image_from_pixels (#516)
  • extend MiniMagick::Tool#stack to support arguments so that it can be used with Active Storage

v4.10.1

06 Jan 13:12
Compare
Choose a tag to compare
  • Still pick up ImageMagick over GraphicsMagick if both are installed

v4.10.0

06 Jan 13:12
Compare
Choose a tag to compare
  • Prioritize discovery of ImageMagick 7 over 6 if both are installed (@drnic)
  • Add MiniMagick::Image#landscape? and #portrait? methods for checking orientiation (@theomarkkuspaul)
  • Fix Ruby 2.7 warnings (@kamipo)

v4.9.5

18 Jul 13:58
Compare
Choose a tag to compare
  • Fixed MiniMagick::Image.open not working with non-ASCII filenames anymore after previous version (thanks to @meganemura)