easyimg_utils 0.1.0 → 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: 3cee759aabb99c51699ea263edad80ab0cb123eefefa91c564c7c79ec9f17793
4
- data.tar.gz: 73490ab571f1b45a411a7c8029dcae48a195769d0e162b4927855c9553ae2ac2
3
+ metadata.gz: ca697c8f506cb4a300a4409d64f141e3ba54ad73a4752a87bff42e56e2966b5a
4
+ data.tar.gz: 38fa011815055c8a5006a98246fa7e1f567568d20c42ded7921da9ba91b7f2c0
5
5
  SHA512:
6
- metadata.gz: df63a9adb7f6461c2dd825569b48401fc843af63f2ae498003917fb62cb2eb108dbde2a3814c74a66317f0799e3f97c4af96acea061885292acbc102a453abc5
7
- data.tar.gz: 87d8504dcefebf572ccaf18aadb0718d996ba125f730cbc1804b5e4ed9597c6fd18f8b8991451a91572334c4f7c17beac06a9d1d19e9b67415a372cfd95cf4d4
6
+ metadata.gz: aecc89caf56b44b17733a41ab911fc5ad8eb1c3fdb05d78285d9b3f2bd30beb3144a6ca11d1e594c543ebead8e34e6ce9557a73e5010dcfab9d14c8dbd0e9f1f
7
+ data.tar.gz: 18a9a3c4bc4fe47990485ef412194b25c7c7a942ff3d28c00b6f52f262b0f915cef06b68ccf176a1009babf225a352941344caf0ba9df17e50a4f6b89a32a916
checksums.yaml.gz.sig CHANGED
Binary file
data/lib/easyimg_utils.rb CHANGED
@@ -3,10 +3,17 @@
3
3
  # file: easyimg_utils.rb
4
4
 
5
5
  require 'c32'
6
+ require 'rxfhelper'
6
7
  require 'rmagick'
7
8
 
8
9
  # requirements:
9
- # `apt-get install imagemagick imagemagick-doc libmagickcore-dev libmagickwand-dev`
10
+ #
11
+ # rmagick package dependencies:
12
+ # apt-get install imagemagick imagemagick-doc libmagickcore-dev libmagickwand-dev`
13
+ #
14
+ # viewer:
15
+ # apt-get install feh
16
+
10
17
 
11
18
 
12
19
  module CommandHelper
@@ -19,8 +26,8 @@ module CommandHelper
19
26
  " %s %s %s" % ['*'.blue, command, desc.to_s.light_black]
20
27
  end
21
28
 
22
- s = a.map {|x| format_command.call(x) }.join("\n")
23
- puts s
29
+ puts a.map {|x| format_command.call(x) }.join("\n")
30
+
24
31
  end
25
32
 
26
33
  def search(s)
@@ -35,31 +42,101 @@ class EasyImgUtils
35
42
  include Magick
36
43
 
37
44
  @commands = "
38
- * resize # set the maximum geomertry of the image for resizing e.g. '320x240'
45
+ * add_text # e.g. add_text('some text')
46
+ * blur # e.g. blur(x: 231, y: 123, w: 85, h: 85)
47
+ * crop # e.g. crop(x: 231, y: 123, w: 85, h: 85)
48
+ * info # returns the dimension of the image in a Hash object
49
+ * resize # set the maximum geomertry of the image for resizing e.g. resize('320x240')
50
+ * view # view the output
39
51
  ".strip.lines.map {|x| x[/(?<=\* ).*/]}.sort
40
52
 
41
53
 
42
- def initialize(img_in=nil, img_out='image.jpg', out: img_out,
54
+ def initialize(img_in=nil, img_out=nil, out: img_out,
43
55
  working_dir: '/tmp')
44
56
 
45
57
  @file_in, @file_out, @working_dir = img_in, out, working_dir
46
58
 
47
59
  end
60
+
61
+ def add_text(s='your text goes here', quality: nil)
62
+
63
+ img = read()
64
+
65
+ d = Draw.new
66
+ img.annotate(d, 0,0,0,0, s) do
67
+ d.gravity = Magick::SouthGravity
68
+ d.pointsize = 26
69
+ d.stroke = '#000000'
70
+ d.fill = '#ffffff'
71
+ d.font_weight = Magick::BoldWeight
72
+ end
73
+
74
+ write img, quality
75
+
76
+ end
77
+
78
+ def blur(x: 0, y: 0, w: 80, h: 80, strength: 8, quality: nil)
79
+
80
+ width, height = w, h
81
+ img = read()
82
+ region = img.dispatch(x, y, width, height, 'RGB')
83
+ face_img = Magick::Image.constitute(width, height, "RGB", region)
84
+ img.composite!(face_img.gaussian_blur(0, strength), x, y,
85
+ Magick::OverCompositeOp)
86
+ write img, quality
87
+
88
+ end
89
+
90
+ def crop(x: 0, y: 0, w: nil, h: nil, quality: nil)
91
+
92
+ return unless w
93
+
94
+ img = read()
95
+ img.crop!(x,y, width=w, height=h)
96
+ write img, quality
97
+
98
+ end
99
+
100
+ def info()
101
+
102
+ img = Magick::Image.ping( @file_in ).first
103
+ {
104
+ geometry: "%sx%s" % [img.columns, img.rows],
105
+ mime_type: img.mime_type, format: img.format,
106
+ quality: img.quality, filesize: img.filesize,
107
+ filename: img.filename, created: img.properties
108
+ }
109
+
110
+ end
48
111
 
49
112
  # defines the maximum size of an image while maintaining aspect ratio
50
113
  #
51
- def resize(geometry='320x240')
114
+ def resize(geometry='320x240', quality: nil)
115
+
116
+ preview = read()
52
117
 
53
- preview = Magick::Image.read(@file_in).first
54
- preview.change_geometry!(geometry) { |cols, rows, img|
118
+ preview.change_geometry!(geometry) do |cols, rows, img|
55
119
  img.resize!(cols, rows)
56
- }
57
- preview.write @file_out
120
+ end
121
+
122
+ write img, quality
58
123
 
59
124
  end
60
125
 
126
+ def view(show: true)
127
+
128
+ return unless @file_out
129
+ command = `feh #{@file_out}`
130
+ run command, show
131
+
132
+ end
61
133
 
62
- private
134
+ private
135
+
136
+ def read()
137
+ data, type = RXFHelper.read(@file_in)
138
+ Magick::Image.from_blob(data).first
139
+ end
63
140
 
64
141
  def run(command, show: false)
65
142
 
@@ -71,6 +148,14 @@ class EasyImgUtils
71
148
  end
72
149
 
73
150
  end
151
+
152
+ def write(img, quality=nil)
153
+
154
+ return img.to_blob unless @file_out
155
+
156
+ img.write @file_out do
157
+ self.quality = quality if quality
158
+ end
159
+ end
74
160
 
75
161
  end
76
-
data.tar.gz.sig CHANGED
Binary file
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: easyimg_utils
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - James Robertson
@@ -35,48 +35,48 @@ cert_chain:
35
35
  6PB/a3YCkvA1ipebq/pmmvF9VopoG5giimE7Rkw0QPUi/w6724YH6tVQj077N2mP
36
36
  WOpXPMFUK6eXTvN8BbxLtUkt
37
37
  -----END CERTIFICATE-----
38
- date: 2019-05-05 00:00:00.000000000 Z
38
+ date: 2019-05-06 00:00:00.000000000 Z
39
39
  dependencies:
40
40
  - !ruby/object:Gem::Dependency
41
- name: c32
41
+ name: rmagick
42
42
  requirement: !ruby/object:Gem::Requirement
43
43
  requirements:
44
44
  - - ">="
45
45
  - !ruby/object:Gem::Version
46
- version: 0.2.0
46
+ version: 3.1.0
47
47
  - - "~>"
48
48
  - !ruby/object:Gem::Version
49
- version: '0.2'
49
+ version: '3.1'
50
50
  type: :runtime
51
51
  prerelease: false
52
52
  version_requirements: !ruby/object:Gem::Requirement
53
53
  requirements:
54
54
  - - ">="
55
55
  - !ruby/object:Gem::Version
56
- version: 0.2.0
56
+ version: 3.1.0
57
57
  - - "~>"
58
58
  - !ruby/object:Gem::Version
59
- version: '0.2'
59
+ version: '3.1'
60
60
  - !ruby/object:Gem::Dependency
61
- name: rmagick
61
+ name: rxfhelper
62
62
  requirement: !ruby/object:Gem::Requirement
63
63
  requirements:
64
- - - ">="
65
- - !ruby/object:Gem::Version
66
- version: 3.1.0
67
64
  - - "~>"
68
65
  - !ruby/object:Gem::Version
69
- version: '3.1'
66
+ version: '0.9'
67
+ - - ">="
68
+ - !ruby/object:Gem::Version
69
+ version: 0.9.4
70
70
  type: :runtime
71
71
  prerelease: false
72
72
  version_requirements: !ruby/object:Gem::Requirement
73
73
  requirements:
74
- - - ">="
75
- - !ruby/object:Gem::Version
76
- version: 3.1.0
77
74
  - - "~>"
78
75
  - !ruby/object:Gem::Version
79
- version: '3.1'
76
+ version: '0.9'
77
+ - - ">="
78
+ - !ruby/object:Gem::Version
79
+ version: 0.9.4
80
80
  description:
81
81
  email: james@jamesrobertson.eu
82
82
  executables: []
@@ -106,5 +106,5 @@ requirements: []
106
106
  rubygems_version: 3.0.1
107
107
  signing_key:
108
108
  specification_version: 4
109
- summary: easyimg_utils
109
+ summary: Makes manipulating images from 1 line of code easier.
110
110
  test_files: []
metadata.gz.sig CHANGED
Binary file