class AppCommand::GenerateUIImageLanding
Constants
- ACCEPTED_IMG_FORMATS
Public Instance Methods
execute()
click to toggle source
# File lib/routes/generate/generate_img_landing.rb, line 7 def execute begin @opts = command_options @args = arguments opts_validate opts_routing rescue => e Blufin::Terminal::print_exception(e) end end
image_name(suffix)
click to toggle source
Standardized way of generating image-name. @return string
# File lib/routes/generate/generate_img_landing.rb, line 88 def image_name(suffix) "#{@image_prefix}-#{suffix}.#{@image_ext}" end
opts_routing()
click to toggle source
Generates a Landing Page Image. See: www.rubyguides.com/2018/12/minimagick-gem/ @return void
# File lib/routes/generate/generate_img_landing.rb, line 60 def opts_routing # TODO REMOVE - $ my g b bl && my g b && bf g ui l ~/Repos/blufin-archetypes/nuxt/v1/static/img/bg/face.jpg testing -ys target_images = [ {:side => 'width', :length => 2560, :ratio => '16:9', :quality => @quality}, {:side => 'width', :length => 1920, :ratio => '16:9', :quality => @quality}, {:side => 'width', :length => 1366, :ratio => '16:9', :quality => @quality}, {:side => 'width', :length => 414, :ratio => '9:18', :quality => @quality}, ] target_output = ["Destination path: #{Blufin::Terminal::format_directory(@path_target)}", nil] target_images.each { |ti| target_output << "\x1B[38;5;154m#{Blufin::Image::calc_file_name(@image_prefix, @image_ext, ti[:side], ti[:length], ti[:ratio])}\x1B[0m \xe2\x86\x92 #{ti.inspect}" } if @opts[:skip_confirm] || Blufin::Terminal::prompt_yes_no("About to #{Blufin::Terminal::format_action('create')} the following images from #{Blufin::Terminal::format_directory(@file_source)}:", target_output) # This runs the crop(s). target_images.each { |ti| target = "#{@path_target}/#{Blufin::Image::calc_file_name(@image_prefix, @image_ext, ti[:side], ti[:length], ti[:ratio])}" Blufin::Image::crop_to_length_and_ratio(@file_source, target, ti[:side], ti[:length], ti[:ratio], ti[:quality]) if @opts[:add_size] img = Blufin::Image::info(target) Blufin::Image::add_text(target, target, "#{img.width}x#{img.height}") end } end end
opts_validate()
click to toggle source
# File lib/routes/generate/generate_img_landing.rb, line 25 def opts_validate if @args.nil? || @args.length < 2 Blufin::Terminal::arg_instructions( [ 'Path to source image.', "Prefix for new image name(s) \xe2\x80\x94 IE: #{Blufin::Terminal::format_highlight('logo')}\x1B[38;5;208m will produce \xe2\x86\x92 #{Blufin::Terminal::format_highlight('logo-375x250.jpg')}" ]) exit end @file_source = File.expand_path(@args[0]) Blufin::Terminal::error("#{Blufin::Terminal::format_directory(@file_source)} file doesn't exist.") unless Blufin::Files::file_exists(@file_source) fss = @file_source.split('/') fss.pop @path_target = fss.join('/') @image_prefix = @args[1] @quality = @opts[:quality] Blufin::Terminal::error("#{Blufin::Terminal::format_directory(@path_target)} path doesn't exist.") unless Blufin::Files::path_exists(@path_target) Blufin::Terminal::error("#{Blufin::Terminal::format_highlight('Image prefix')} cannot be blank or nil.") if @image_prefix.nil? || @image_prefix.to_s.strip == '' Blufin::Terminal::error("#{Blufin::Terminal::format_highlight('Quality')} must be integer between 0 - 100, instead got: #{@quality}") unless @quality.to_s =~ /^\d+$/ && @quality.to_i >= 0 && @quality.to_i <= 100 @image_ext = File.extname(@file_source).gsub(/^\./, '').strip.downcase Blufin::Terminal::error("Unsupported file-extension #{Blufin::Terminal::format_highlight(@image_ext)}. Supported extensions are:", ACCEPTED_IMG_FORMATS, true) unless ACCEPTED_IMG_FORMATS.include?(@image_ext) @image = Blufin::Image::info(@file_source) Blufin::Terminal::custom('SCANNED', 4, "Source Image: #{Blufin::Terminal::format_directory(@file_source)}", [ "Type: \x1B[38;5;94m#{@image.type}\x1B[0m", "Size: \x1B[38;5;94m#{@image.size}\x1B[0m", "Dimensions: \x1B[38;5;94m#{@image.width}x#{@image.height}\x1B[0m", "GCD: \x1B[38;5;94m#{Blufin::Image::gcd(@image.width, @image.height)}\x1B[0m", "Aspect: \x1B[38;5;94m#{Blufin::Image::calc_aspect_ratio(@image.width, @image.height)}\x1B[0m" ]) end