mini_magick 4.11.0 → 4.12.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/lib/mini_magick/configuration.rb +8 -0
- data/lib/mini_magick/image/info.rb +2 -2
- data/lib/mini_magick/image.rb +15 -4
- data/lib/mini_magick/shell.rb +3 -5
- data/lib/mini_magick/tool.rb +1 -1
- data/lib/mini_magick/utilities.rb +1 -1
- data/lib/mini_magick/version.rb +1 -1
- metadata +6 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 20aea50f08b4b5c234dc8167e3b8f344b3bb5e279e4d28857ce38d2acbdc0772
|
4
|
+
data.tar.gz: 513048f1e3315516fe592da1ecb3dec41f8e7a55e8165fe37db0720a297c5daa
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b5e8d72969c3649b4514a5b53fb5d228fb5db58bd9bdef0b7457838ed1289e62c8a6c0ec28cda9463fc16a159724d024a23043de5a377c2824f5bc9b148a627d
|
7
|
+
data.tar.gz: 28e78716378e97ba8c57758cb684b0428d734c1e5163f626a53b38f52c8f133db7fe0f041727c3a5ee200d241cdbd9409986caacc49746d361905c76a4bfed38
|
@@ -45,6 +45,13 @@ module MiniMagick
|
|
45
45
|
# @return [Logger]
|
46
46
|
#
|
47
47
|
attr_accessor :logger
|
48
|
+
##
|
49
|
+
# Temporary directory used by MiniMagick, default is `Dir.tmpdir`, but
|
50
|
+
# you can override it.
|
51
|
+
#
|
52
|
+
# @return [String]
|
53
|
+
#
|
54
|
+
attr_accessor :tmpdir
|
48
55
|
|
49
56
|
##
|
50
57
|
# If set to `true`, it will `identify` every newly created image, and raise
|
@@ -82,6 +89,7 @@ module MiniMagick
|
|
82
89
|
attr_accessor :shell_api
|
83
90
|
|
84
91
|
def self.extended(base)
|
92
|
+
base.tmpdir = Dir.tmpdir
|
85
93
|
base.validate_on_create = true
|
86
94
|
base.validate_on_write = true
|
87
95
|
base.whiny = true
|
@@ -61,13 +61,13 @@ module MiniMagick
|
|
61
61
|
rescue ArgumentError, TypeError
|
62
62
|
raise MiniMagick::Invalid, "image data can't be read"
|
63
63
|
end
|
64
|
-
|
64
|
+
|
65
65
|
def parse_warnings(raw_info)
|
66
66
|
return raw_info unless raw_info.split("\n").size > 1
|
67
67
|
|
68
68
|
raw_info.split("\n").each do |line|
|
69
69
|
# must match "%m %w %h %b"
|
70
|
-
return line if line.match?
|
70
|
+
return line if line.match?(/^[A-Z]+ \d+ \d+ \d+(|\.\d+)([KMGTPEZY]{0,1})B$/)
|
71
71
|
end
|
72
72
|
raise TypeError
|
73
73
|
end
|
data/lib/mini_magick/image.rb
CHANGED
@@ -340,13 +340,18 @@ module MiniMagick
|
|
340
340
|
#
|
341
341
|
# 1) one for each row of pixels
|
342
342
|
# 2) one for each column of pixels
|
343
|
-
# 3) three elements in the range 0-255, one for each of the RGB color channels
|
343
|
+
# 3) three or four elements in the range 0-255, one for each of the RGB(A) color channels
|
344
344
|
#
|
345
345
|
# @example
|
346
346
|
# img = MiniMagick::Image.open 'image.jpg'
|
347
347
|
# pixels = img.get_pixels
|
348
348
|
# pixels[3][2][1] # the green channel value from the 4th-row, 3rd-column pixel
|
349
349
|
#
|
350
|
+
# @example
|
351
|
+
# img = MiniMagick::Image.open 'image.jpg'
|
352
|
+
# pixels = img.get_pixels("RGBA")
|
353
|
+
# pixels[3][2][3] # the alpha channel value from the 4th-row, 3rd-column pixel
|
354
|
+
#
|
350
355
|
# It can also be called after applying transformations:
|
351
356
|
#
|
352
357
|
# @example
|
@@ -357,19 +362,22 @@ module MiniMagick
|
|
357
362
|
#
|
358
363
|
# In this example, all pixels in pix should now have equal R, G, and B values.
|
359
364
|
#
|
365
|
+
# @param map [String] A code for the mapping of the pixel data. Must be either
|
366
|
+
# 'RGB' or 'RGBA'. Default to 'RGB'
|
360
367
|
# @return [Array] Matrix of each color of each pixel
|
361
|
-
def get_pixels
|
368
|
+
def get_pixels(map="RGB")
|
369
|
+
raise ArgumentError, "Invalid map value" unless ["RGB", "RGBA"].include?(map)
|
362
370
|
convert = MiniMagick::Tool::Convert.new
|
363
371
|
convert << path
|
364
372
|
convert.depth(8)
|
365
|
-
convert << "
|
373
|
+
convert << "#{map}:-"
|
366
374
|
|
367
375
|
# Do not use `convert.call` here. We need the whole binary (unstripped) output here.
|
368
376
|
shell = MiniMagick::Shell.new
|
369
377
|
output, * = shell.run(convert.command)
|
370
378
|
|
371
379
|
pixels_array = output.unpack("C*")
|
372
|
-
pixels = pixels_array.each_slice(
|
380
|
+
pixels = pixels_array.each_slice(map.length).each_slice(width).to_a
|
373
381
|
|
374
382
|
# deallocate large intermediary objects
|
375
383
|
output.clear
|
@@ -453,6 +461,9 @@ module MiniMagick
|
|
453
461
|
@info.clear
|
454
462
|
|
455
463
|
self
|
464
|
+
rescue MiniMagick::Invalid, MiniMagick::Error => e
|
465
|
+
new_tempfile.unlink if new_tempfile && @tempfile != new_tempfile
|
466
|
+
raise e
|
456
467
|
end
|
457
468
|
|
458
469
|
##
|
data/lib/mini_magick/shell.rb
CHANGED
@@ -14,7 +14,7 @@ module MiniMagick
|
|
14
14
|
stdout, stderr, status = execute(command, stdin: options[:stdin])
|
15
15
|
|
16
16
|
if status != 0 && options.fetch(:whiny, MiniMagick.whiny)
|
17
|
-
fail MiniMagick::Error, "`#{command.join(" ")}` failed with error:\n#{stderr}"
|
17
|
+
fail MiniMagick::Error, "`#{command.join(" ")}` failed with status: #{status} and error:\n#{stderr}"
|
18
18
|
end
|
19
19
|
|
20
20
|
$stderr.print(stderr) unless options[:stderr] == false
|
@@ -25,7 +25,7 @@ module MiniMagick
|
|
25
25
|
def execute(command, options = {})
|
26
26
|
stdout, stderr, status =
|
27
27
|
log(command.join(" ")) do
|
28
|
-
send("execute_#{MiniMagick.shell_api.
|
28
|
+
send("execute_#{MiniMagick.shell_api.tr("-", "_")}", command, options)
|
29
29
|
end
|
30
30
|
|
31
31
|
[stdout, stderr, status.exitstatus]
|
@@ -50,9 +50,7 @@ module MiniMagick
|
|
50
50
|
end
|
51
51
|
in_w.close
|
52
52
|
|
53
|
-
|
54
|
-
Timeout.timeout(MiniMagick.timeout) { thread.join }
|
55
|
-
rescue Timeout::Error
|
53
|
+
unless thread.join(MiniMagick.timeout)
|
56
54
|
Process.kill("TERM", thread.pid) rescue nil
|
57
55
|
Process.waitpid(thread.pid) rescue nil
|
58
56
|
raise Timeout::Error, "MiniMagick command timed out: #{command}"
|
data/lib/mini_magick/tool.rb
CHANGED
@@ -241,7 +241,7 @@ module MiniMagick
|
|
241
241
|
# mogrify.command.join(" ") #=> "mogrify canvas:khaki"
|
242
242
|
#
|
243
243
|
CREATION_OPERATORS.each do |operator|
|
244
|
-
define_method(operator.
|
244
|
+
define_method(operator.tr('-', '_')) do |value = nil|
|
245
245
|
self << "#{operator}:#{value}"
|
246
246
|
self
|
247
247
|
end
|
@@ -24,7 +24,7 @@ module MiniMagick
|
|
24
24
|
end
|
25
25
|
|
26
26
|
def tempfile(extension)
|
27
|
-
Tempfile.new(["mini_magick", extension]).tap do |tempfile|
|
27
|
+
Tempfile.new(["mini_magick", extension], MiniMagick.tmpdir).tap do |tempfile|
|
28
28
|
tempfile.binmode
|
29
29
|
yield tempfile if block_given?
|
30
30
|
tempfile.close
|
data/lib/mini_magick/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: mini_magick
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 4.
|
4
|
+
version: 4.12.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Corey Johnson
|
@@ -10,10 +10,10 @@ authors:
|
|
10
10
|
- James Miller
|
11
11
|
- Thiago Fernandes Massa
|
12
12
|
- Janko Marohnić
|
13
|
-
autorequire:
|
13
|
+
autorequire:
|
14
14
|
bindir: bin
|
15
15
|
cert_chain: []
|
16
|
-
date:
|
16
|
+
date: 2022-12-07 00:00:00.000000000 Z
|
17
17
|
dependencies:
|
18
18
|
- !ruby/object:Gem::Dependency
|
19
19
|
name: rake
|
@@ -139,7 +139,7 @@ homepage: https://github.com/minimagick/minimagick
|
|
139
139
|
licenses:
|
140
140
|
- MIT
|
141
141
|
metadata: {}
|
142
|
-
post_install_message:
|
142
|
+
post_install_message:
|
143
143
|
rdoc_options: []
|
144
144
|
require_paths:
|
145
145
|
- lib
|
@@ -155,8 +155,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
155
155
|
version: '0'
|
156
156
|
requirements:
|
157
157
|
- You must have ImageMagick or GraphicsMagick installed
|
158
|
-
rubygems_version: 3.
|
159
|
-
signing_key:
|
158
|
+
rubygems_version: 3.3.3
|
159
|
+
signing_key:
|
160
160
|
specification_version: 4
|
161
161
|
summary: Manipulate images with minimal use of memory via ImageMagick / GraphicsMagick
|
162
162
|
test_files: []
|