rmagick-bin_magick 0.1.2 → 0.2.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 29ff31c416b63fd2836b37082fccf0dea82da5808ff9e2bf98a84cbbc3872ca3
4
- data.tar.gz: ec4a093d837270c8c1cd3984d3b1049e8e3a81e7cd4e14b1ab2863fc40e9b80c
3
+ metadata.gz: 0a293900932fdfc11d0cc3ba539c01ba265ccc4a152742f12a9e5a4232a6c7ce
4
+ data.tar.gz: b27891b507f6e6206e89d8030a3fac4eadd7b863989647deab08e2cd7a6cfb3c
5
5
  SHA512:
6
- metadata.gz: 273dfe1d97525e26d06854104758b011101dbc6e52218a9321f8e5312d892a898814668ffd440e3a235c0ee002e346a45e231d04c630938d09f46f0ab8b48cc9
7
- data.tar.gz: d7bdd7e46ef7a4f509e2c4a68ea209285ef049c09b4c87d550fc07208b7cdc0ab919d933473912eb0e9c194adf7caacedf89264ee544bcba5edceb0a3ef36056
6
+ metadata.gz: 65b15dc2c7c57dcc93353fd88b03cc3daa17d06d6a94490a7f81f05e636fbbaff5609b1cce710795e12356be8c9596efef8521d382bc6cc8c51567ec17b6747c
7
+ data.tar.gz: 512fc5b71bfd67963a3b778bc0ecdb61bce2d8d623a074d8d580dede300b580d766912f69729ddc91ebb3c4613b634d7aaeb0439da06cc45788af4caa1df427b
data/CHANGELOG.md CHANGED
@@ -1,3 +1,8 @@
1
+ ### 0.2.0 / 2023-04-17
2
+
3
+ - Implemented the *Magick::BinMagick::Image#binary?* method;
4
+ - Fixed a bug in the *crop_border* methods.
5
+
1
6
  ### 0.1.2 / 2023-04-01
2
7
 
3
8
  - Fixed the *display* method.
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- rmagick-bin_magick (0.1.0)
4
+ rmagick-bin_magick (0.1.2)
5
5
  rmagick (~> 5.2, >= 5.2.0)
6
6
 
7
7
  GEM
data/README.md CHANGED
@@ -181,6 +181,16 @@ The code above will produce the following result:
181
181
 
182
182
  ### Class Magick::BinMagick::Image: instance methods
183
183
 
184
+ - **binary?**
185
+
186
+ *img*.binary? -> *boolean*
187
+
188
+ Checks if the image consists of pixels that can have one of exactly two colors: black or white.
189
+
190
+ **Returns**: a boolean value.
191
+
192
+ ***
193
+
184
194
  - **black_px?**
185
195
 
186
196
  *img*.black_px? -> *boolean*
@@ -195,7 +205,7 @@ The code above will produce the following result:
195
205
 
196
206
  *img*.crop_border -> *image*
197
207
 
198
- Crop border around the image. If the image is blank (has all pixels of white color): returns an unedited copy of the target image.
208
+ Crop border around the image. If the image can't be cropped (e.g. it has only pixels of the same color): returns an unedited copy of the target image.
199
209
 
200
210
  Methods calculates a bounding box value for the target image (see Magick::Image#[bounding_box](https://rmagick.github.io/image1.html#bounding_box)), and uses that value to crop a copy of the target image.
201
211
 
@@ -221,7 +231,7 @@ The code above will produce the following result:
221
231
 
222
232
  Same as *crop_border*, but treats a color image like it is already a binary one. The bounding box value is being calculated for a binary version of the target image, then a copy of the target image is being cropped used that value.
223
233
 
224
- Method **does not** convert the target image to a binary, but uses a binary version only to calculate the bounding box value. For that purpose it accepts and utilizes all *to_binary* arguments.
234
+ The method **does not** convert the target image to a binary, but uses a binary version only to calculate the bounding box value. For that purpose it accepts and utilizes all *to_binary* arguments.
225
235
 
226
236
  **Arguments**: see *to_binary* arguments description.
227
237
 
@@ -8,35 +8,36 @@ module Magick
8
8
  # Image instance methods.
9
9
  #
10
10
  class Image < MagickWrapper
11
+ #
12
+ # Check if the image is a binary image.
13
+ #
14
+ # @return [Boolean]
15
+ #
16
+ def binary?
17
+ accepted_colors = %w[black white]
18
+ colors = quantize.color_histogram.transform_keys(&:to_color)
19
+
20
+ (colors.keys - accepted_colors).empty?
21
+ end
22
+
11
23
  #
12
24
  # Check if the image has at least one black pixel.
13
25
  #
14
26
  # @return [Boolean]
15
27
  #
16
28
  def black_px?
17
- colors = color_histogram
18
- colors = colors.transform_keys(&:to_color)
19
-
29
+ colors = color_histogram.transform_keys(&:to_color)
20
30
  colors.key?("black")
21
31
  end
22
32
 
23
33
  #
24
- # Crop border around the image. If the image is blank: return an unedited copy of the target image.
34
+ # Crop border around the image or return an unedited copy if the image can't be cropped.
25
35
  #
26
36
  # @return [BinMagick::Image]
27
37
  # A cropped image.
28
38
  #
29
39
  def crop_border
30
- return copy unless black_px?
31
-
32
- bb = bounding_box
33
-
34
- crop(
35
- bb.x,
36
- bb.y,
37
- bb.width,
38
- bb.height
39
- )
40
+ _crop_border(self)
40
41
  end
41
42
 
42
43
  #
@@ -59,17 +60,7 @@ module Magick
59
60
  #
60
61
  def crop_border_clr(...)
61
62
  bin_img = to_binary(...)
62
-
63
- return copy unless bin_img.black_px?
64
-
65
- bb = bin_img.bounding_box
66
-
67
- crop(
68
- bb.x,
69
- bb.y,
70
- bb.width,
71
- bb.height
72
- )
63
+ _crop_border(bin_img)
73
64
  end
74
65
 
75
66
  #
@@ -215,6 +206,19 @@ module Magick
215
206
 
216
207
  private
217
208
 
209
+ #
210
+ # Crop border around the image *img* or return an unedited copy of the image if the image can't be cropped.
211
+ #
212
+ # @param [Magick::BinMagick::Image] img
213
+ # Image to crop.
214
+ #
215
+ def _crop_border(img)
216
+ bb = img.bounding_box
217
+ crop(bb.x, bb.y, bb.width, bb.height)
218
+ rescue RuntimeError
219
+ img.copy
220
+ end
221
+
218
222
  #
219
223
  # Replace pixels in the target image with pixels from the image 'img' that is a result of a BinMagick::Image or
220
224
  # a Magick::Image instance method call.
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Magick
4
4
  module BinMagick
5
- VERSION = "0.1.2"
5
+ VERSION = "0.2.0"
6
6
  end
7
7
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rmagick-bin_magick
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.2
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Mate
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2023-04-01 00:00:00.000000000 Z
11
+ date: 2023-04-17 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rmagick