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) { |img| img.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 |img|
    img.background_color = _base_color
  end
end