Skip to content

Commit db7bec4

Browse files
committed
MiniMagick v5.0 supoort and marcel gem added
## Why? fixes #102 https://github.com/minimagick/minimagick/releases/tag/v5.0.0 > 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. ``` [MiniMagick] MiniMagick::Image#mime_type has been deprecated, because it wasn't returning correct result for all formats ImageMagick supports. Unfortunately, returning the correct MIME type would be very slow, because it would require ImageMagick to read the whole file. It's better to use Marcel and MimeMagic gems, which are able to determine the MIME type just from the image header. ```
1 parent c7d24a1 commit db7bec4

File tree

7 files changed

+27
-9
lines changed

7 files changed

+27
-9
lines changed

Gemfile.rails5_mini_magick

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
# Copyright (c) 2011-2023 NAITOH Jun
1+
# Copyright (c) 2011-2025 NAITOH Jun
22
# Released under the MIT license
33
# http://www.opensource.org/licenses/MIT
44

@@ -8,5 +8,6 @@ source 'https://rubygems.org'
88
gemspec
99

1010
gem "actionpack", "~> 5.2.8.1"
11-
gem "mini_magick", "< 5.0"
11+
gem "mini_magick"
12+
gem 'marcel'
1213
gem 'loofah', '<= 2.20.0' if RUBY_VERSION < '2.5'

Gemfile.rails6_mini_magick

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,4 +9,5 @@ gemspec
99

1010
gem "actionpack", "~> 6.1.7.2"
1111
gem "concurrent-ruby", '1.3.4'
12-
gem "mini_magick", "< 5.0"
12+
gem "mini_magick"
13+
gem 'marcel'

Gemfile.rails7_mini_magick

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,4 +8,5 @@ source 'https://rubygems.org'
88
gemspec
99

1010
gem "actionpack", "~> 7.2.2.1"
11-
gem "mini_magick", "< 5.0"
11+
gem "mini_magick"
12+
gem 'marcel'

Gemfile.rails8_mini_magick

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,5 +8,5 @@ source 'https://rubygems.org'
88
gemspec
99

1010
gem "actionpack", "~> 8.0.2"
11-
gem "mini_magick", "< 5.0"
12-
11+
gem "mini_magick"
12+
gem 'marcel'

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ RBPDF is distributed via RubyGems, and can be installed the usual way that you i
2929

3030
If you are using image file, it is recommended you install:
3131
```
32-
gem install mini_magick
32+
gem install mini_magick marcel
3333
```
3434
or
3535
```

lib/core/mini_magick.rb

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -51,18 +51,27 @@ def getimagesize(filename)
5151
return false
5252
end
5353

54+
unless Object.const_defined?(:Marcel)
55+
Error('No Marcel: Non-PNG file is not supported.: ' + filename);
56+
return false
57+
end
58+
5459
image = MiniMagick::Image.open(filename)
5560

5661
width = image.width
5762
height = image.height
5863

59-
out['mime'] = image.mime_type
64+
mime_type = File.open filename do |file|
65+
::Marcel::MimeType.for file
66+
end
67+
68+
out['mime'] = mime_type
6069
out[0] = width
6170
out[1] = height
6271

6372
# These are actually meant to return integer values But I couldn't seem to find anything saying what those values are.
6473
# So for now they return strings. The only place that uses this at the moment is the parsejpeg method, so I've changed that too.
65-
case image.mime_type
74+
case mime_type
6675
when "image/gif"
6776
out[2] = "GIF"
6877
when "image/jpeg"

lib/rbpdf.rb

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,12 @@
5959
# MiniMagick is not available
6060
end
6161

62+
begin
63+
require 'marcel' unless Object.const_defined?(:Marcel)
64+
rescue LoadError
65+
# Marcel is not available
66+
end
67+
6268
unless Object.const_defined?(:MiniMagick)
6369
begin
6470
# RMagick 2.14.0

0 commit comments

Comments
 (0)