class Camalian::Image

Load image into Camalian

Attributes

src_file_path[RW]

Public Class Methods

new(file_path) click to toggle source
# File lib/camalian/image.rb, line 8
def initialize(file_path)
  @src_file_path = file_path
end

Public Instance Methods

prominent_colors(count = Camalian.options[:color_count], quantization: Camalian.options[:quantization], optimal: true) click to toggle source
# File lib/camalian/image.rb, line 12
def prominent_colors(count = Camalian.options[:color_count],
                     quantization: Camalian.options[:quantization],
                     optimal: true)
  image = ::ChunkyPNG::Image.from_file(@src_file_path)

  colors = image.pixels.map do |val|
    Color.new(
      ChunkyPNG::Color.r(val),
      ChunkyPNG::Color.g(val),
      ChunkyPNG::Color.b(val)
    )
  end

  quantize = quantization.new

  palette = quantize.process(colors, count)

  retry_count = 1
  while !optimal && palette.size < count
    palette = quantize.process(colors, count + retry_count)
    retry_count += 1
  end

  palette
end