image_quality_check 0.2.4 → 0.3.1

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: a5e8a3bce1a00b6023e31a34dc3e1acabc1dc9d80450f059a7934d7ef2925d4e
4
- data.tar.gz: 515cebc68693cbc6d213846c428dd9111665fd6588e189349f2ec32a4c5677a6
3
+ metadata.gz: 4ab7968543aa37e947d5798fc0271ba31b237bb3cac53c2533f71eec63884747
4
+ data.tar.gz: 451a79066c757887ab46033a7294ddebbf28813a69077db677effe547b5d9e42
5
5
  SHA512:
6
- metadata.gz: dab40cad5a0269f737635b721ae62b86d875aa69e88e23189924236370afa3256df316e5517d4c9106ec7df832707eb4e1973cd19923505bfccb8e0c84291350
7
- data.tar.gz: 0d6bbac089bc474a671d125eed15f3dc0222c738d5ff8a2b26fda0a6692bd924372371324bc9ff1b21a28369ad6f33aba5aee52bf8bbf20e31c7520ee8a7ab18
6
+ metadata.gz: 26edb98e4ee195e9c3c8cd7ced2e996b0b2702767b099de833752762582fbc63432548910795817d6931f022efca2f8821e3330fb0d48588d04825757d008e82
7
+ data.tar.gz: 28e7fbdd241d5d8eab4379b66bccbc343885f321634709c5b0edbaa6bb69fe4a4089091e2b4f361258c3290bdd4c060e9f89e1e60e63c536cf2a37375503412c
data/.gitignore CHANGED
@@ -7,3 +7,5 @@
7
7
  /spec/reports/
8
8
  /tmp/
9
9
  spec/.examples.txt
10
+ Gemfile.lock
11
+ .tool-versions
@@ -12,7 +12,12 @@ img = cv2.imread(sys.argv[1], 0)
12
12
  clahe = cv2.createCLAHE(clipLimit=2.0, tileGridSize=(8,8))
13
13
  img = clahe.apply(img)
14
14
 
15
- face_cascade = cv2.CascadeClassifier(cv2.data.haarcascades + 'haarcascade_frontalface_default.xml')
15
+ if hasattr(cv2, 'data'):
16
+ prefix = cv2.data.haarcascades
17
+ else:
18
+ prefix = '/usr/share/opencv4/haarcascades/'
19
+
20
+ face_cascade = cv2.CascadeClassifier(prefix + 'haarcascade_frontalface_default.xml')
16
21
  faces_detect = face_cascade.detectMultiScale(img, scaleFactor=1.5, minNeighbors=3)
17
22
 
18
23
  for (x, y, w, h) in faces_detect:
@@ -32,10 +37,10 @@ else:
32
37
  face = img
33
38
 
34
39
 
35
- smile_cascade = cv2.CascadeClassifier(cv2.data.haarcascades + 'haarcascade_smile.xml')
40
+ smile_cascade = cv2.CascadeClassifier(prefix + 'haarcascade_smile.xml')
36
41
  smile_detect = smile_cascade.detectMultiScale(face, minNeighbors=40, scaleFactor=1.14)
37
42
 
38
- eye_cascade = cv2.CascadeClassifier(cv2.data.haarcascades + 'haarcascade_eye.xml')
43
+ eye_cascade = cv2.CascadeClassifier(prefix + 'haarcascade_eye.xml')
39
44
  eye_detect = eye_cascade.detectMultiScale(face, minNeighbors=15)
40
45
 
41
46
  out['hasSmile'] = len(smile_detect) > 0
@@ -62,6 +62,13 @@ class ImageQualityCheck::DetermineQuality
62
62
 
63
63
  def read!(tmp_file)
64
64
  case @column.class.to_s
65
+ when 'ActiveStorage::Attached::One'
66
+ if !@column.blob || !File.exist?(@column.blob.service.send(:path_for, @column.blob.key))
67
+ false
68
+ else
69
+ FileUtils.cp(@column.blob.service.send(:path_for, @column.blob.key), tmp_file.path)
70
+ true
71
+ end
65
72
  when "Paperclip::Attachment"
66
73
  if !@column.path || !File.exist?(@column.path)
67
74
  false
@@ -9,7 +9,7 @@ module ImageQualityCheck::DSL
9
9
  def rules_for(klass, attachment)
10
10
  rule = @rules[[klass.to_s, attachment.to_s]]
11
11
  unless rule
12
- raise NotImplemented, I18n.t("image_quality_check.dsl.no_qualities_defined_for", klass: (klass), attachment: (attachment))
12
+ raise NotImplementedError, I18n.t("image_quality_check.dsl.no_qualities_defined_for", klass: (klass), attachment: (attachment))
13
13
  end
14
14
  @current_rule = []
15
15
  class_exec(&rule)
@@ -1,3 +1,3 @@
1
1
  module ImageQualityCheck
2
- VERSION = "0.2.4"
2
+ VERSION = "0.3.1"
3
3
  end
@@ -14,12 +14,18 @@ module ImageQualityCheck
14
14
 
15
15
  def self.analyze(path_to_image)
16
16
  out = `convert #{Shellwords.escape path_to_image} json:`
17
- # image magick gif delay bug invalid json
18
- # https://github.com/ImageMagick/ImageMagick/issues/1624
19
- out.gsub!(/("delay": "[^"]+")\n/m, "\\1,\n")
20
17
  return {} if out.empty?
21
18
 
22
- raw_json = JSON.parse(out)
19
+ raw_json = nil
20
+ begin
21
+ raw_json = JSON.parse(out)
22
+ rescue StandardError
23
+ # image magick gif delay bug invalid json
24
+ # https://github.com/ImageMagick/ImageMagick/issues/1624
25
+ out.gsub!(/("delay": "[^"]+")\n/m, "\\1,\n")
26
+ end
27
+
28
+ raw_json ||= JSON.parse(out)
23
29
  json = raw_json.is_a?(Array) ? raw_json.first['image'] : raw_json['image']
24
30
  background_is_transparent =
25
31
  json.dig('channelDepth', 'alpha') &&
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: image_quality_check
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.4
4
+ version: 0.3.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Stefan Wienert
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2023-09-13 00:00:00.000000000 Z
11
+ date: 2025-01-31 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: i18n
@@ -73,7 +73,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
73
73
  - !ruby/object:Gem::Version
74
74
  version: '0'
75
75
  requirements: []
76
- rubygems_version: 3.2.15
76
+ rubygems_version: 3.5.16
77
77
  signing_key:
78
78
  specification_version: 4
79
79
  summary: Thin gem wrapper that uses imagemagick and python-opencv to help determine