Skip to content

Instantly share code, notes, and snippets.

@cptangry
Last active September 25, 2016 17:36
Show Gist options
  • Save cptangry/18be8302da878c9c0577dce48609ec8c to your computer and use it in GitHub Desktop.
Save cptangry/18be8302da878c9c0577dce48609ec8c to your computer and use it in GitHub Desktop.
Son revizyon ile: Eğer 3. parametre false verilirse resim önizlemesi es geçilebilir. Dizide RGB değeri nil (yani boş) döndüyse palet dizisine eklenmeyecek ama dönen toplam renk dizisini bileceksiniz. Elde edilen renk paleti listesi sRGB formatında dosyaya kaydedilebilir.
#!/usr/bin/env ruby
# -*- coding: utf-8 -*-
require 'catpix'
require 'yaml'
require 'colorscore'
include Colorscore
def draw_img(pic)
Catpix::print_image(pic, options = {
:limit_x => 1.0,
:limit_y => 0,
:center_x => true,
:center_y => true,
:bg => "#c0ffee",
:bg_fill => true})
end
def color_palette(pic, palette_size)
histogram = Histogram.new(pic)
palette = []
len = histogram.scores.length
histogram.scores.first(palette_size).each do |array|
palette << array unless array[1].nil?
end
return palette, len
end
def show_palette(palette, len)
puts "\nToplam Renk adedi: #{len}"
puts "\nHakim renkler:"
palette.each_with_index { |a, index| puts "#{index + 1}. RENK : #{a}" }
puts """
\nÖNEMLİ NOT: Eğer girdiğiniz parametreden az renk gösteriliyorsa \n
1. Resmin toplam renk sayısı parametrenizden azdır\n
2. Listelenen renk sayısı toplam renk saysından azsa nil RGB değerler
yok sayılmıştır.
""" if len > palette.length
end
def save_palette(data)
File.open("renk_listesi_#{Time.now}.txt", "w") { |f| f.puts(data.to_yaml) }
end
def ask_it
puts "Kaydedilsin mi? evet hariç tüm girdiler HAYIR kabul edilir!"
ans = $stdin.gets.chomp
if ans == "evet"
return true
else
return false
end
end
def run_app(args, guide)
if args[0].nil?
puts guide
else
pic = args[0]
palette_size = args[1].nil? ? 10 : args[1].to_i
preview = true unless args[2] == "false"
draw_img(pic) if preview
palette = color_palette(pic, palette_size)
show_palette(palette[0], palette[1])
q = ask_it
save_palette(palette[0]) if q
end
end
guide = <<~HEREDOC
İlk parametre olarak dosya adı belirtmelisiniz.
İkinci parametre olarak paletteki renk adetini belirleyebilirsiniz.
Üçüncü parametre olarak false kullanırsanız ön izleme gösterilmez.
Eğer renk adeti belirtilmediyse varsayılan değer: 10
Örnek:
ruby renkler.rb resim.png 5
ruby renkler.rb resim.png 5 false
HEREDOC
args = ARGV
run_app(args, guide) if $0 == __FILE__
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment