pixel_dreamer 0.1.1 → 0.1.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: a2b6d4c8b9a8914a5fe423239ef9a4053cec41d6
4
- data.tar.gz: aa08eb21b906e0bdbf4b5e61fc14c6df84b0bed7
3
+ metadata.gz: f2755662834b6d29d86003e61a56ad76ef757c0e
4
+ data.tar.gz: 574338b44d0b554334fdc46548edcfd28b3fbd09
5
5
  SHA512:
6
- metadata.gz: 0df19f3df4e9a2597fcc21df831bc12127ad9f37d91b38cc2f048d0b1e0d1e94e2f45a1d9956c4baa2851fa55de9a95a37075649c3b5be43de03a27eef6fd8bb
7
- data.tar.gz: 5a2fad52d3eb1a6bb69af45ac35e7a828e4791808b41bd7f4d44a667f4359d66c19197d32c25a2dcea313729f4c182d9423cd063ff19d5d7ea5cef5ad4fbe81d
6
+ metadata.gz: b9007beee381eff013770d34073473b0bee89d98c34ca746d547d13ce9580503bbe51a6907727ddbafca0f5fe73913285960bf32ec955be390204c834ee4ecd1
7
+ data.tar.gz: 096333590019121c53569b48d20df0c1f636f62d019b7b286d2f2aa9bc0e4f689c96ed1d5b3ce2944670d31f0d6f71107eb5f1e18c9fc30f80b002dc74335d9b
data/README.md CHANGED
@@ -1,13 +1,11 @@
1
1
  # PixelDreamer
2
2
 
3
- Welcome to your new gem! In this directory, you'll find the files you need to be able to package up your Ruby library into a gem. Put your Ruby code in the file `lib/pixel_dreamer`. To experiment with that code, run `bin/console` for an interactive prompt.
4
-
5
- TODO: Delete this and the text above, and describe your gem
6
-
7
3
  ## Installation
8
4
 
9
5
  Add this line to your application's Gemfile:
10
6
 
7
+ Install RMagick and ImageMagick from here: [RMagick](https://github.com/rmagick/rmagick)
8
+
11
9
  ```ruby
12
10
  gem 'pixel_dreamer'
13
11
  ```
@@ -22,17 +20,165 @@ Or install it yourself as:
22
20
 
23
21
  ## Usage
24
22
 
25
- TODO: Write usage instructions here
23
+ ### ImageDreamer
24
+
25
+ To use pixel dreamer you must first create a new `PixelDreamer::ImageDreamer` class
26
+ to do this you must pass in the uri of the image you will be pixel sorting:
27
+ ```ruby
28
+ image = PixelDreamer::ImageDreamer.new('/uri/image.png')
29
+ ```
30
+
31
+ you can also pass in an image to be laid on top of the image that is pixel sorted,
32
+ overlay image is optional:
33
+
34
+
35
+ ```ruby
36
+ image = PixelDreamer::ImageDreamer.new('/uri/image.png', 'overlay/image.png')
37
+ ```
38
+ #### brute_sort_save_with_settings
39
+
40
+ pixel sorts an image and outputs a text file with settings used.
41
+ once the image has been instantiated you can run this method without passing in any parameters.
42
+ by default it runs with these paramaters:
43
+ `{ settings: DEFAULTS, output_name: nil, gif: false, output_folder: false }`
44
+
45
+ ```ruby
46
+ image.brute_sort_save_with_settings
47
+ ```
48
+
49
+ or with these parameters
50
+
51
+ ```ruby
52
+ image.brute_sort_save_with_settings(settings: PixelDreamer::Constants::DEFAULTS, output_name: nil,
53
+ gif: false, output_folder: false)
54
+ ```
55
+
56
+ or
57
+
58
+ ```ruby
59
+ image.brute_sort_save_with_settings(settings: { reverse: false, vertical: false, diagonal: false,
60
+ smooth: false, method: 'sum-rgb', verbose: false,
61
+ min: Float::INFINITY, max: Float::INFINITY,
62
+ trusted: false, middle: false })
63
+ ```
64
+
65
+ also read the documentation for [pxlsrt](https://github.com/czycha/pxlsrt) to get an idea of what these parameters do
66
+
67
+
68
+ #### glitch_sequence
69
+
70
+
71
+ creates a sequence of pixel sorted images based on the setting hash and a sequence_setting hash chosen.
72
+ once the image has been instantiated you can run this method without passing in any parameters
73
+ by default it is executed with these settings:
74
+
75
+ `settings: SETTINGS[:soft], sequence_settings: SEQUENCE_SETTINGS[:high_short], compress: true, speed: 84 `
76
+
77
+ example:
78
+
79
+ ```ruby
80
+ image.glitch_sequence
81
+ ```
82
+
83
+ or with parameters, an output name can be passed in as well (string)
84
+
85
+ ```ruby
86
+ image.glitch_sequence({ settings: PixelDreamer::Constants::SETTINGS[:sharp],
87
+ sequence_settings: PixelDreamer::Constants::SEQUENCE_SETTINGS[:high_long],
88
+ compress: false, speed: 42, output_name: 'image_glitched' })
89
+ ```
90
+
91
+ the output name must only include the name of the output image not the file extension.
92
+ this creates a sequence of of images that have been pixel sorted with the increments specified.
93
+ the settings_hash can be pulled from the `SETTINGS` constant, defaults to `SETTINGS[:soft]`.
94
+ the sequence_settings can be pulled from the `SEQUENCE_SETTINGS` constant, defaults to `SEQUENCE_SETTINGS[:high_short]`.
95
+ compress defaults to true, copies and compresses input file and creates sequence from compressed file
96
+ the fps is set by the speed which is in milliseconds, defaults to 84ms (12fps)
97
+ the uri_helper method can be used to create the input uri
98
+
99
+ #### barrage
100
+
101
+ creates an image for each setting from the settings hash. quickest way to see how all of the settings effect the image supplied.
102
+ once the image has been instantiated you can run this method without passing in any parameters
103
+ by default it is executed with these settings:
104
+ `gif: false, compress: true, speed: 84`
105
+
106
+ ```ruby
107
+ image.barrage
108
+ ```
109
+
110
+ or with parameters, an output name (string) can be passed in as well
111
+
112
+ ```ruby
113
+ image.barrage({ gif: true, compress: false, speed: 42, output_name: 'image_glitched' })
114
+ ```
115
+
116
+ the output name must only include the name of the output image not the file extension
117
+ the uri_helper can be used to create the input uri
118
+
119
+ #### randomize
120
+
121
+ creates a series of images that are pixel sorted with randomized settings, the output is very hectic.
122
+ once the image has been instantiated you can run this method without passing in any parameters
123
+ by default it is executed with these settings:
124
+ `gif: false, compress: true, speed: 84, image_number: 10`
125
+
126
+ ```ruby
127
+ image.randomize
128
+ ```
129
+
130
+ or with parameters, an output name (string) can be passed in as well
131
+
132
+ ```ruby
133
+ image.randomize({ gif: trues, compress: false, speed: 42, image_number: 20, output_name: 'image_glitched' })
134
+ ```
26
135
 
27
- ## Development
136
+ the output name must only include the name of the output image not the file extension
137
+ the amount of images that are created are based on the image_number (integer)
28
138
 
29
- After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake spec` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
139
+ #### gif
30
140
 
31
- To install this gem onto your local machine, run `bundle exec rake install`. To release a new version, update the version number in `version.rb`, and then run `bundle exec rake release`, which will create a git tag for the version, push git commits and tags, and push the `.gem` file to [rubygems.org](https://rubygems.org).
141
+ creates a gif using the images created from using either the randomize, glitch_sequence or barrage methods.
142
+ once the image has been instantiated you can run this method without passing in any parameters
143
+ by default it is executed with these settings:
144
+ `speed: 84, dither: DITHER_DEFAULTS, image_delay: IMAGE_DELAY_DEFAULTS`
145
+
146
+ ```ruby
147
+ image.gif
148
+ ```
149
+
150
+ or with parameters, an output name (string) can be passed in as well
151
+
152
+ ```ruby
153
+ image.gif({speed: 42, dither: PixelDreamer::Constants::DITHER_DEFAULTS,
154
+ image_delay: PixelDreamer::Constants::IMAGE_DELAY_DEFAULTS, output_name: 'image_gif'})
155
+ ```
156
+ or
157
+
158
+ ```ruby
159
+ image.gif({speed: 42, dither: {active: false, number_of_colors: 200},
160
+ image_delay: {active: false, image_to_delay: 1, delay_length: 1000}, output_name: 'image_gif'})
161
+ ```
162
+
163
+ speed is used to set the length of time for each frame of the gif, it defaults to milliseconds
164
+ - 12 fps: length of frame = 84 ms
165
+ - 24 fps: length of frame = 42 ms
166
+ - 30 fps: length of frame = 33 ms
167
+ - 60 fps: length of frame = 17 ms
168
+ the dither hash used to set the dither settings
169
+ the image_delay hash is used to pause the sequence on an image for a set amount of time
170
+
171
+ #### uri_helper
172
+
173
+ creates a uri by adding the name to common paths
174
+
175
+ ```ruby
176
+ test = uri_helper('desktop', 'test.png')
177
+ ```
32
178
 
33
179
  ## Contributing
34
180
 
35
- Bug reports and pull requests are welcome on GitHub at https://github.com/[USERNAME]/pixel_dreamer.
181
+ Bug reports and pull requests are welcome on GitHub at https://github.com/13um45/pixel_dreamer.
36
182
 
37
183
 
38
184
  ## License
@@ -1,58 +1,58 @@
1
1
  module PixelDreamer
2
2
  module Constants
3
- SETTINGS = {sharp: {verbose: true, vertical: true, min: 20, max: 60, method: 'uniqueness'},
4
- soft: {verbose: true, vertical: true, min: 100, max: 300},
5
- soft_diagonal: {verbose: true, diagonal: true, min: 100, max: 300},
6
- side_glitch: {verbose: true, vertical: false, min: 40, middle: -1},
7
- side_glitch_soft: {verbose: true, vertical: false, min: 100, max: 300, middle: -1},
8
- side_glitch_erratic: {verbose: true, vertical: false, min: 100, max: 300, middle: -4},
9
- vertical_glitch_soft: {verbose: true, vertical: true, min: 100, max: 300, middle: -1},
10
- soft_unique: {verbose: true, vertical: true, min: 100, max: 300, method: 'uniqueness'},
11
- side_soft_unique: {verbose: true, vertical: false, min: 100, max: 300, method: 'uniqueness'},
12
- side_soft_aggressive: {verbose: true, vertical: false, min: 100, max: 300, method: 'sum-hsb', smooth: true},
13
- side_soft_harsh: {verbose: true, vertical: false, min: 100, max: 300, method: 'hue', smooth: true},
14
- side_soft_sand: {verbose: true, vertical: false, min: 100, max: 300, method: 'random', smooth: true},
15
- side_soft_yellow: {verbose: true, vertical: false, min: 100, max: 300, method: 'yellow', smooth: true},
16
- soft_reverse: {verbose: true, vertical: true, min: 100, max: 300, reverse: true},
17
- soft_min: {verbose: true, diagonal: true, max: 6},
18
- cinna: {verbose: true, vertical: true, min: 150, max: 300},
19
- cami: {verbose: true, vertical: true, min: 60, max: 120}}
3
+ SETTINGS = { sharp: { vertical: true, min: 20, max: 60, method: 'uniqueness' },
4
+ soft: { vertical: true, min: 100, max: 300 },
5
+ soft_diagonal: { diagonal: true, min: 100, max: 300 },
6
+ side_glitch: { vertical: false, min: 40, middle: -1 },
7
+ side_glitch_soft: { vertical: false, min: 100, max: 300, middle: -1 },
8
+ side_glitch_erratic: { vertical: false, min: 100, max: 300, middle: -4 },
9
+ vertical_glitch_soft: { vertical: true, min: 100, max: 300, middle: -1 },
10
+ soft_unique: { vertical: true, min: 100, max: 300, method: 'uniqueness' },
11
+ side_soft_unique: { vertical: false, min: 100, max: 300, method: 'uniqueness' },
12
+ side_soft_aggressive: { vertical: false, min: 100, max: 300, method: 'sum-hsb', smooth: true },
13
+ side_soft_harsh: { vertical: false, min: 100, max: 300, method: 'hue', smooth: true },
14
+ side_soft_sand: { vertical: false, min: 100, max: 300, method: 'random', smooth: true },
15
+ side_soft_yellow: { vertical: false, min: 100, max: 300, method: 'yellow', smooth: true },
16
+ soft_reverse: { vertical: true, min: 100, max: 300, reverse: true },
17
+ soft_min: { diagonal: true, max: 6 },
18
+ cinna: { vertical: true, min: 150, max: 300 },
19
+ cami: { vertical: true, min: 60, max: 120 } }.freeze
20
20
 
21
21
  SORTING_METHODS = ['sum-rgb', 'red', 'green', 'blue', 'sum-hsb', 'hue', 'saturation', 'brightness', 'uniqueness',
22
- 'luma', 'random', 'magenta', 'cyan', 'yellow', 'alpha', 'sum-rgba', 'sum-hsba', 'none']
22
+ 'luma', 'random', 'magenta', 'cyan', 'yellow', 'alpha', 'sum-rgba', 'sum-hsba', 'none'].freeze
23
23
 
24
- RANDOMIZE_SETTINGS = {reverse: [true, false], vertical: [true, false], diagonal: [true, false],
25
- smooth: [true, false], method: SORTING_METHODS, min: (1..1000).to_a,
26
- max: (1..1000).to_a, trusted: [true, false], middle: [true, false], verbose: [true]}
24
+ RANDOMIZE_SETTINGS = { reverse: [true, false], vertical: [true, false], diagonal: [true, false],
25
+ smooth: [true, false], method: SORTING_METHODS, min: (1..1000).to_a,
26
+ max: (1..1000).to_a, trusted: [true, false], middle: [true, false], verbose: [true] }.freeze
27
27
 
28
- RANDOMIZE_DEFAULTS = {gif: false, compress: true, speed: 84, image_number: 10}
28
+ RANDOMIZE_DEFAULTS = { gif: false, compress: true, speed: 84, image_number: 10 }.freeze
29
29
 
30
- SEQUENCE_SETTINGS = {high_long: {counter: 1, max_multiple: 3, increment: 1, break_point: 101},
31
- high_short: {counter: 1, max_multiple: 3, increment: 1, break_point: 31},
32
- high_short_late: {counter: 70, max_multiple: 3, increment: 1, break_point: 101},
33
- cinna: {counter: 120, max_multiple: 2, increment: 1, break_point: 151},
34
- cami: {counter: 60, max_multiple: 2, increment: 1, break_point: 91},
35
- high_short_late_middle: {counter: 45, max_multiple: 3, increment: 1, break_point: 76},
36
- high_short_early: {counter: 20, max_multiple: 3, increment: 1, break_point: 51},
37
- low_short: {counter: 1, max_multiple: 3, increment: 3, break_point: 31},
38
- low_long: {counter: 1, max_multiple: 3, increment: 3, break_point: 101}}
30
+ SEQUENCE_SETTINGS = { high_long: { counter: 1, max_multiple: 3, increment: 1, break_point: 101 },
31
+ high_short: { counter: 1, max_multiple: 3, increment: 1, break_point: 31 },
32
+ high_short_late: { counter: 70, max_multiple: 3, increment: 1, break_point: 101 },
33
+ cinna: { counter: 120, max_multiple: 2, increment: 1, break_point: 151 },
34
+ cami: { counter: 60, max_multiple: 2, increment: 1, break_point: 91 },
35
+ high_short_late_middle: { counter: 45, max_multiple: 3, increment: 1, break_point: 76 },
36
+ high_short_early: { counter: 20, max_multiple: 3, increment: 1, break_point: 51 },
37
+ low_short: { counter: 1, max_multiple: 3, increment: 3, break_point: 31 },
38
+ low_long: { counter: 1, max_multiple: 3, increment: 3, break_point: 101 } }.freeze
39
39
 
40
- DEFAULTS = {reverse: false, vertical: false, diagonal: false,
41
- smooth: false, method: 'sum-rgb', verbose: false,
42
- min: Float::INFINITY, max: Float::INFINITY,
43
- trusted: false, middle: false}
40
+ DEFAULTS = { reverse: false, vertical: false, diagonal: false,
41
+ smooth: false, method: 'sum-rgb', verbose: false,
42
+ min: Float::INFINITY, max: Float::INFINITY,
43
+ trusted: false, middle: false }.freeze
44
44
 
45
- GLITCH_SEQUENCE_DEFAULTS = {settings: SETTINGS[:soft], sequence_settings: SEQUENCE_SETTINGS[:high_short],
46
- compress: true, speed: 84}
45
+ GLITCH_SEQUENCE_DEFAULTS = { settings: SETTINGS[:soft], sequence_settings: SEQUENCE_SETTINGS[:high_short],
46
+ compress: true, speed: 84, gif: true }.freeze
47
47
 
48
- BARRAGE_DEFAULTS = {gif: false, compress: true, speed: 84}
48
+ BARRAGE_DEFAULTS = { gif: false, compress: true, speed: 84 }.freeze
49
49
 
50
- BRUTE_SORT_SAVE_WITH_SETTINGS_DEFAULTS = {settings: {}, output_name: nil, gif: false,
51
- output_folder: false}
52
- IMAGE_DELAY_DEFAULTS = {active: false, image_to_delay: 1, delay_length: 1000}
50
+ BRUTE_SORT_SAVE_WITH_SETTINGS_DEFAULTS = { settings: {}, output_name: nil, gif: false,
51
+ output_folder: false }.freeze
52
+ IMAGE_DELAY_DEFAULTS = { active: false, image_to_delay: 1, delay_length: 1000 }.freeze
53
53
 
54
- DITHER_DEFAULTS = {active: false, number_of_colors: 200}
54
+ DITHER_DEFAULTS = { active: false, number_of_colors: 200 }.freeze
55
55
 
56
- GIF_DEFAULTS = {speed: 84, dither: DITHER_DEFAULTS, image_delay: IMAGE_DELAY_DEFAULTS}
56
+ GIF_DEFAULTS = { speed: 84, dither: DITHER_DEFAULTS, image_delay: IMAGE_DELAY_DEFAULTS }.freeze
57
57
  end
58
58
  end
@@ -1,3 +1,3 @@
1
1
  module PixelDreamer
2
- VERSION = "0.1.1"
2
+ VERSION = "0.1.2"
3
3
  end
data/lib/pixel_dreamer.rb CHANGED
@@ -18,8 +18,7 @@ module PixelDreamer
18
18
  include Magick
19
19
  attr_accessor :image, :overlay_image
20
20
 
21
- def initialize(image, overlay_image = nil)
22
-
21
+ def initialize(image, overlay_image = nil, app = false)
23
22
  @image = prepare_image(image)
24
23
  @overlay_image = overlay_image
25
24
  @input_name = name_parser(image)
@@ -28,6 +27,15 @@ module PixelDreamer
28
27
  @sequence_frame_path = sequence_frame_path
29
28
  @image_path = image_path
30
29
  @output_folder = output_folder
30
+ @app = app
31
+ end
32
+
33
+ def show_sequence_folder
34
+ @sequence_folder
35
+ end
36
+
37
+ def show_output_folder
38
+ @output_folder
31
39
  end
32
40
 
33
41
  ##
@@ -40,10 +48,20 @@ module PixelDreamer
40
48
  end_image
41
49
  end
42
50
 
43
- # pixel sorts on image
44
- # by default blah blah blah
45
- # to lazy to write the documentation rn
46
- # read the documentation from the other methods to get an idea
51
+ # pixel sorts an image and outputs a text file with settings used
52
+ # once the image has been instantiated you can run this method without passing in any parameters
53
+ # by default it runs with these paramaters:
54
+ # { settings: DEFAULTS, output_name: nil, gif: false, output_folder: false }
55
+ # example:
56
+ # image.brute_sort_save_with_settings
57
+ # or with these parameters
58
+ #
59
+ # image.brute_sort_save_with_settings(settings: PixelDreamer::Constants::DEFAULTS, output_name: nil, gif: false, output_folder: false)
60
+ # or
61
+ # image.brute_sort_save_with_settings(settings: { reverse: false, vertical: false, diagonal: false,
62
+ # smooth: false, method: 'sum-rgb', verbose: false,
63
+ # min: Float::INFINITY, max: Float::INFINITY,
64
+ # trusted: false, middle: false })
47
65
  # also read the documentation for pxlsrt
48
66
  def brute_sort_save_with_settings(options = {})
49
67
  options[:image] ||= @image
@@ -100,12 +118,12 @@ module PixelDreamer
100
118
  settings[:min] = counter
101
119
  settings[:max] = counter * sequence_settings[:max_multiple]
102
120
  brute_sort_save_with_settings(image: @path, settings: settings, output_name: (output_name + "_#{image_number}"),
103
- gif: true, output_folder: true)
121
+ gif: true, output_folder: true)
104
122
  puts "IMAGE #{image_number}/#{sequence_settings[:break_point] - sequence_settings[:counter]} COMPLETE"
105
123
  image_number += 1
106
124
  counter += sequence_settings[:increment]
107
125
  end
108
- gif(options)
126
+ gif(options) if options[:gif]
109
127
  end
110
128
 
111
129
 
@@ -134,7 +152,7 @@ module PixelDreamer
134
152
 
135
153
  Constants::SETTINGS.each do |key, setting_hash|
136
154
  brute_sort_save_with_settings(image: image, settings: setting_hash, output_name: (output_name + "_#{key}"),
137
- gif: gif, output_folder: true)
155
+ gif: gif, output_folder: true)
138
156
  puts "Image #{counter}/#{Constants::SETTINGS.length} complete."
139
157
  counter += 1
140
158
  end
@@ -162,7 +180,7 @@ module PixelDreamer
162
180
 
163
181
  options[:image_number].times do
164
182
  brute_sort_save_with_settings(image: image, settings: randomize_settings, output_name: (options[:output_name] + random_name),
165
- gif: options[:gif], output_folder: true)
183
+ gif: options[:gif], output_folder: true)
166
184
  end
167
185
  end
168
186
 
@@ -205,15 +223,32 @@ module PixelDreamer
205
223
  options[:dither] = Constants::DITHER_DEFAULTS.merge(options[:dither])
206
224
  image_delay = options[:image_delay]
207
225
  dither = options[:dither]
208
- animation = ImageList.new(*Dir["#{@sequence_folder}*.png"].sort_by { |x| x[/\d+/].to_i })
226
+
227
+ sorted_dir = Dir["#{@sequence_folder}*.png"].sort_by do |x|
228
+ b = x[/_(\d+)/]
229
+ if b.nil?
230
+ 0
231
+ else
232
+ b.delete('_').to_i
233
+ end
234
+ end
235
+ animation = ImageList.new(*sorted_dir)
209
236
  animation.ticks_per_second=1000
210
237
  puts 'Got images.'
211
238
  animation.delay = options[:speed]
212
239
  animation[(image_delay[:image_to_delay] - 1)].delay = image_delay[:delay_length] if image_delay[:active]
213
240
  puts 'Creating GIF.'
214
241
  animation = dither(animation, dither[:number_of_colors]) if dither[:active]
242
+ animation = animation.deconstruct if @overlay_image && @app
215
243
  animation.write("#{@output_folder}#{options[:output_name]}.gif")
244
+
245
+ if (File.size("#{@output_folder}#{options[:output_name]}.gif") / 1000000) > 8 && @app
246
+ animation = dither(animation, 256)
247
+ animation.write("#{@output_folder}#{options[:output_name]}.gif")
248
+ end
249
+
216
250
  puts 'Complete.'
251
+ "#{@output_folder}#{options[:output_name]}.gif"
217
252
  end
218
253
 
219
254
  ##
@@ -255,15 +290,14 @@ module PixelDreamer
255
290
  end
256
291
 
257
292
  def dither(animation, number_of_colors)
258
- animation.quantize(number_colors=number_of_colors,
259
- colorspace=RGBColorspace, dither=RiemersmaDitherMethod,
260
- tree_depth=0, measure_error=false)
293
+ animation.quantize(number_of_colors, Magick::RGBColorspace, true, 0, false)
261
294
  end
262
295
 
263
296
  def prepare(counter, compress)
264
297
  make_dir?
265
298
  path_selector(counter, compress, image)
266
299
  compress(image, @path) if compress
300
+ resize!(@path) if @app
267
301
  end
268
302
 
269
303
  ##
@@ -326,17 +360,30 @@ module PixelDreamer
326
360
 
327
361
  def path_selector(counter, compress, input)
328
362
  if compress
329
- if counter > 1
330
- @path = @image_path
331
- else
332
- @path = @sequence_frame_path
333
- end
363
+ @path = if counter > 1
364
+ @image_path
365
+ else
366
+ @sequence_frame_path
367
+ end
334
368
  else
335
369
  @path = input
336
370
  FileUtils.copy(input, @sequence_frame_path)
337
371
  end
338
372
  end
339
373
 
374
+ def resize!(image_uri)
375
+ i = Image.read(image_uri).first
376
+ h = i.columns
377
+ w = i.rows
378
+ s = h * w
379
+
380
+ if s > 1500000
381
+ percentage = (1500000.0 / s).round(2)
382
+ resized = i.resize(percentage)
383
+ resized.write(image_uri)
384
+ end
385
+ end
386
+
340
387
  ##
341
388
  # still being used but partially deprecated
342
389
  def output(base_uri, input_name, output_name, options, gif, output_folder)
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pixel_dreamer
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.1.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Christian Samuel
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2017-04-08 00:00:00.000000000 Z
11
+ date: 2017-04-16 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rmagick