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 ifImage.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) andImage#exif
(returns different format).As a result,
MiniMagick.cli
andMiniMagick.processor
configuration has been removed as well. -
MiniMagick::Image
andMiniMagick.convert
now usemagick
instead of the deprecatedmagick 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 withMiniMagick.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 toMiniMagick.errors
. -
Images are no longer automatically validated on
Image.open
,Image.read
orImage.create
. -
The deprecated
Image#details
method has been removed in favor of the more reliableImage#data
. -
The
Image#respond_to_missing?
method has been removed, meaning thatImage#respond_to?
will returnfalse
for ImageMagick option methods.As a result, the undocumented
MiniMagick::Tool.option_methods
method has been removed as well, along with the no-opMiniMagick.reload_tools
. -
Removed the obsolete
MiniMagick.processor_path
configuration, which as mostly an alias forMiniMagick.cli_path
. -
Removed the deprecated
MiniMagick.debug
configuration in favor ofMiniMagick.logger.level = Logger::DEBUG
. -
Removed the unused
MiniMagick.validate_on_write
configuration. -
Additional
Pathname#open
orURI#open
options forImage.open
need to be passed in as keyword arguments instead of a hash.