stickerizer/stickerizer.rb

62 lines
1.3 KiB
Ruby
Raw Normal View History

2019-06-11 02:52:00 +00:00
# frozen_string_literal: true
require 'mini_magick'
2019-06-13 23:42:41 +00:00
require_relative 'file_nav'
2019-06-11 02:52:00 +00:00
class Stickerizer
2019-06-16 03:21:12 +00:00
Extension = Struct.new(:extension)
def file_ext(filename)
Extension.new(filename[-4..-1])
end
2019-06-13 23:42:41 +00:00
def initialize
@convert = DirTermine.new
end
2019-06-11 02:52:00 +00:00
def stickerize(pic_file, save_dir)
image = MiniMagick::Image.open(pic_file)
image.resize '512x512'
2019-06-16 03:21:12 +00:00
image.format 'PNG'
image.write(save_dir + '/' + stickername(pic_file))
2019-06-16 07:51:44 +00:00
2019-06-16 03:21:12 +00:00
end
def stickername(filename)
2019-06-16 07:51:44 +00:00
file_only = filename.sub %r{/.+/}, ''
"#{file_only[0..-5]}_sticker.png"
2019-06-13 23:42:41 +00:00
end
def origin_dir
@convert.origin_dir
end
def dest_dir
@convert.destination_dir
end
def valid?(file)
2019-06-16 07:51:44 +00:00
#TODO: Change this to check file types instead of relying on filenames
2019-06-13 23:42:41 +00:00
valid = false
2019-06-16 03:21:12 +00:00
file_info = file_ext(file)
valid = true if file_info.extension == '.png'
valid = true if file_info.extension == '.jpg'
valid = true if file_info.extension == '.gif'
puts "File #{file}: valid: #{valid}"
2019-06-13 23:42:41 +00:00
valid
end
def convert_images
origin = origin_dir
destination = dest_dir
2019-06-16 07:51:44 +00:00
puts "#{origin} is origin"
2019-06-13 23:42:41 +00:00
Dir.children(origin).each do |unstickerized|
2019-06-16 07:51:44 +00:00
puts "#{unstickerized} OOA"
2019-06-13 23:42:41 +00:00
next unless valid?(unstickerized)
2019-06-16 07:51:44 +00:00
stickerize("#{origin}/#{unstickerized}", destination)
2019-06-13 23:42:41 +00:00
end
2019-06-11 02:52:00 +00:00
end
end