class Grobber::Image
Attributes
base_color[R]
second_color[R]
signature[R]
Public Class Methods
new(string_base)
click to toggle source
# File lib/grobber/image.rb, line 7 def initialize string_base @signature = Digest::SHA1.hexdigest string_base end
Public Instance Methods
binary_array()
click to toggle source
# File lib/grobber/image.rb, line 50 def binary_array signature[0..8].split(//).map do |c| 2 * c.hex / 16 end end
binary_matrix()
click to toggle source
# File lib/grobber/image.rb, line 36 def binary_matrix @binary_matrix ||= SquareMatrix.new(binary_array).flip_flop end
color_matrix()
click to toggle source
# File lib/grobber/image.rb, line 40 def color_matrix @color_matrix ||= generate_hexa_array end
generate_hexa_array()
click to toggle source
# File lib/grobber/image.rb, line 44 def generate_hexa_array binary_matrix.array.map do |b| b.zero? ? base_color : second_color end end
to_rmagick(size_px = 480)
click to toggle source
# File lib/grobber/image.rb, line 19 def to_rmagick size_px = 480 new_base_image(size_px).tap do |magick| block_width = size_px / 6 binary_matrix.each_with_coords do |b, x, y| next if b.zero? add_block magick, color_string(second_color), x, y, block_width end end end
write(path, size = 480)
click to toggle source
# File lib/grobber/image.rb, line 29 def write path, size = 480 magick = to_rmagick size magick.write(path) { self.quality = 95 } magick.destroy! path end
Private Instance Methods
add_block(image, color, x, y, square_px)
click to toggle source
# File lib/grobber/image.rb, line 62 def add_block image, color, x, y, square_px origin_point = [x, y].map{ |c| c * square_px } end_point = [x, y].map{ |c| (c + 1) * square_px } draw_rectangle image, color, origin_point, end_point end
color_string(hex_value)
click to toggle source
# File lib/grobber/image.rb, line 58 def color_string hex_value "##{ hex_value }" end
draw_rectangle(image, color, origin_point, end_point)
click to toggle source
# File lib/grobber/image.rb, line 68 def draw_rectangle image, color, origin_point, end_point p = Magick::Draw.new p.fill = color p.stroke_width(0) p.rectangle(*origin_point, *end_point) p.draw(image) end
new_base_image(size_px)
click to toggle source
# File lib/grobber/image.rb, line 76 def new_base_image size_px _base_color = color_string(base_color) Magick::Image.new(size_px,size_px) do self.background_color = _base_color end end