class Flickrage::Worker::Resize
Constants
- MAX_IMAGE_SIZE
- MIN_IMAGE_SIZE
Public Instance Methods
call(image_list)
click to toggle source
# File lib/flickrage/worker/resize.rb, line 8 def call(image_list) raise Flickrage::ResizeError, 'Not enough images for resize' if image_list.downloaded&.size < 1 speaker.add_padding logger.debug('Resizing process') init_crop_value('width') init_crop_value('height') @spin = spinner(message: 'Resizing images') files = image_list.downloaded.map do |image| Concurrent .future(thread_pool) do update_spin(spin, title: "Resizing image #{image.id}") service.run(image) end .then do |r| update_spin(spin, title: "Resized image #{r.id}") r end .rescue { |_| nil } end result = Concurrent.zip(*files).value result = result.compact.flatten if result total = result.count(&:resized?) if total > 2 spin.success else spin.error('(failed: Not enough images resized)') raise Flickrage::ResizeError end speaker.add_padding logger.info("Resized #{result.count(&:resized?)} images:") speaker.print_table([PRINT_IMAGE_HEADERS_LITE + %w(path resized?)] + result.map do |i| [i.keyword, i.id, i.resize_path, i.resized?] end) image_list.merge_images result ensure clean_thread_pool spin&.stop end
Private Instance Methods
init_crop_value(name)
click to toggle source
# File lib/flickrage/worker/resize.rb, line 61 def init_crop_value(name) return true if valid_value?(Flickrage.config[name]) value = speaker.ask("Please enter image resize #{name}:") value = String(value).to_i unless valid_value?(value) increment_error_counter(Flickrage::NumberError, "#{value} >= #{MIN_IMAGE_SIZE}, #{value} =< #{MAX_IMAGE_SIZE}") return init_crop_value(name) end reset_error_counter Flickrage.config[name] = value end
service()
click to toggle source
# File lib/flickrage/worker/resize.rb, line 57 def service @service ||= Service::Resizer.new(Flickrage.config.width, Flickrage.config.height) end
valid_value?(value)
click to toggle source
# File lib/flickrage/worker/resize.rb, line 78 def valid_value?(value) return false unless value value >= MIN_IMAGE_SIZE && value <= MAX_IMAGE_SIZE end