Releases: minimagick/minimagick
v5.0.1
-
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
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.
v4.13.2
v4.13.1
v4.13.0
-
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 withmagick 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 callidentify
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 withimage/*
.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
- Added new
tmpdir
configuration, which defaults toDir.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?
withFile.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 atimeout
argument instead of the Timeout standard library (#525)
v4.11.0
v4.10.1
v4.10.0
v4.9.5
- Fixed
MiniMagick::Image.open
not working with non-ASCII filenames anymore after previous version (thanks to @meganemura)