Sha256: 43b15d82511a74066fe2035db4bf621736045904f3b484a1704f8e85346c4271

Contents?: true

Size: 901 Bytes

Versions: 4

Compression:

Stored size: 901 Bytes

Contents

# frozen_string_literal: true

module Camalian
  # Load image into Camalian
  class Image
    attr_accessor :src_file_path

    def initialize(file_path)
      @src_file_path = file_path
    end

    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
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
camalian-0.2.2 lib/camalian/image.rb
camalian-0.2.1 lib/camalian/image.rb
camalian-0.2.0 lib/camalian/image.rb
camalian-0.1.1 lib/camalian/image.rb