LINUX.ORG.RU

Спишись с гуглом у них если на цветные квадратики нажать ищются картинки с преоладанием оных.

anonymous
()
Ответ на: комментарий от anon_666

Причем в xpm

там все банально

/* XPM */
static char *millie[] = {
/* columns rows colors chars-per-pixel */
"32 32 8 1",
"  c #000000",
". c #00FC00",
"X c #F80000",
"o c #F8FC00",
"O c #808080",
"+ c #C0C0C0",
"@ c #F8FCF8",
"# c None",
/* pixels */
"                                ",
" .............................. ",
" .............................. ",
" ..        .........        ... ",
" . XXXXXXXX    .    XXXXXXXX .. ",
" . XX   XX @@@@ @@@@ XX   XX .. ",
" . XX+X X @@  @ @  @@ X X+XX .. ",
" .. XXXXX @@  @ @  @@ XXXXX ... ",
" ...     . @@@@ @@@@ .     .... ",
" ..........    X    ........... ",
" .......... XXXXXXX ........... ",
" .......... XXXXXXX ........... ",
" .......... XXXXXXX ........... ",
" .......... XXXXXXX ........... ",
" .......... XXXXXXX ........... ",
" .......... XXXXXXX ........... ",
" .......... XXXXXXX ........... ",
" .......... XXXXXXX ........... ",
" .......... XXXXXXX ........... ",
" ........  +++++++++  ......... ",
" ....... +++++++++++++ ........ ",
"OOOOOOOOOO  +++++++  + ........ ",
"O@@@@@@@@@  +++++++  + ........ ",
"O@@@    @@ +++++++++++ ........ ",
"O@@@@   @@            ......... ",
"O@@@    @@ +++++++++ .......... ",
"O@@   @ @@          ........... ",
"O@@  @@@@@ .. XXX ............. ",
"O@@ @@@@@@    XXX   ........... ",
"O@@@ @@@@@ ooo   ooo .......... ",
"O@@@@@@@@@ ooooooooo .......... ",
"                                "
};
sdio ★★★★★
()

Это называется гистограмма, и её умеет любой графический редактор среднего пошиба.

jcd ★★★★★
()

Ох, забыл добавить. Программа очень хотелась бы консольная, для использования в баш-скрипте.

Breton
() автор топика
Ответ на: комментарий от A2K

Ему нужна гистограмма по каналу H(ue) в HSV/HSL и гимп в обычном виде её не умеет делеть. Так же это не умеет делать и любой редактор среднего пошиба.

Задача тем не менее копеечная, быстро можно сделать, например, с помощью питона/PIL

mikki
()

Черновой вариант, работает для 6 цветов + чёрный и белый тона.

#!/usr/bin/python

from sys	import argv
from math	import cos, pi
from PIL 	import Image

Im = Image.open(argv[1])

if Im.mode != 'RGB': raise Exception

Px = Im.load()

stat = [0] * 8; N = 0


for x in xrange(Im.size[0]):
	for y in xrange(Im.size[1]):
		N += 1
		R, G, B = Px[x, y]

		V = max(R, G, B)
		C = V - min(R, G, B) + 0.

		S = 1 - C / V if V > 0.001 else 0.

		if   C < 0.001: k = 1
		else:
			if   R == V: H = (G - B)/C
			elif G == V: H = (B - R)/C + 2
			elif B == V: H = (R - G)/C + 4

			H = int((H + 0.5) % 6)
			k = ((cos(S*pi) + 1) / 2) ** 4
			stat[2 + H] += 1-k

		V = V / 256.

		stat[0] += k * (1 - V)
		stat[1] += k * V


for x in xrange(len(stat)):
	stat[x] = (100*stat[x]/N, ('black', 'white', 'red',
		'yellow', 'green', 'aqua', 'blue', 'purple')[x])

stat.sort(reverse=True, key = lambda x: x[0])

for x in stat:
	if x[0] >= 0.01:
		F = ('%.2f' % (x[0]%1,))[2:]
		print '%02i.%s %s' % (int(x[0]), F, x[1])

mikki
()
Ответ на: комментарий от mikki

% ./analyze.py image.gif
Traceback (most recent call last):
File "./analyze.py", line 10, in <module>
if Im.mode != 'RGB': raise Exception
Exception

Но всё равно спасибо, попробую ещё потыкать код.

Breton
() автор топика
Ответ на: комментарий от Breton

Утилита работает с полноцветовыми изображениями, с пикселем RGB. PIL, оказывается, не умеет работать с палитрами индексированных изображений и проапгрейдить её для GIF просто не получится.

mikki
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.