From: "Simon Kröger" Date: 2005-10-12T06:48:51+09:00 Subject: unfinished [SOLUTION] Text Image (#50) Hi, i'm completely new to ncurses, so could someone with more exprerience (or another OS) try this and tell me whats happening? On windows all the colors are very pale (are there consts for lighter colors?) ----------------------------------------------------------------------- require 'RMagick' require "ncurses" Ncurses.initscr puts "Usage: #{$0} [size]" or exit if !ARGV[0] puts "Sorry, no colors!" or exit unless Ncurses.has_colors? img, size = Magick::ImageList.new(ARGV[0]), (ARGV[1]||40).to_f factor = [size*2/img.rows, size/img.columns].min img.resize!(img.columns*factor, (img.rows*factor*0.5).round) COLORS = [[Ncurses::COLOR_BLACK, [0, 0, 0]], [Ncurses::COLOR_RED, [1, 0, 0]], [Ncurses::COLOR_GREEN, [0, 1, 0]], [Ncurses::COLOR_BLUE, [0, 0, 1]], [Ncurses::COLOR_YELLOW, [1, 1, 0]], [Ncurses::COLOR_MAGENTA, [1, 0, 1]], [Ncurses::COLOR_CYAN, [0, 1, 1]], [Ncurses::COLOR_WHITE, [1, 1, 1]]] GRADIENT = [[0, ' '], [50, ':'], [100, '|'], [150, 'I'], [200, '#']] COLORMAP = {} COLORS.size.times do |bg| COLORS.size.times do |fg| next if fg == bg i = (bg*COLORS.size) + fg Ncurses.init_pair(i, COLORS[fg][0], COLORS[bg][0]) GRADIENT.each do |gr, c| r = COLORS[fg][1][0] * gr + COLORS[bg][1][0] * (255-gr) g = COLORS[fg][1][1] * gr + COLORS[bg][1][1] * (255-gr) b = COLORS[fg][1][2] * gr + COLORS[bg][1][2] * (255-gr) COLORMAP[[r, g, b]] = [i, c] end end end #(16*16*4).times do |i| # Ncurses.stdscr.attrset(Ncurses.COLOR_PAIR(i)) # Ncurses.stdscr.mvaddstr(i/16, (i%16)*4, 'TEST') #end #Ncurses.refresh pixels = img.get_pixels(0, 0, img.columns, img.rows) img.rows.times do |y| img.columns.times do |x| p = pixels[y*img.columns + x] r, g, b, best, dist = p.red, p.green, p.blue, -1, 255 COLORMAP.each do |k, v| d = Math.sqrt((r-k[0])**2 + (g-k[1])**2 + (b-k[2])**2) (best, dist = v, d) if d < dist end Ncurses.stdscr.attrset(Ncurses.COLOR_PAIR(best[0])) Ncurses.stdscr.mvaddstr(y, x, best[1]) end end Ncurses.refresh ----------------------------------------------------------------------- maybe someone can help.. cheers Simon