Last active
September 25, 2016 17:36
-
-
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.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/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