Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Media";
Текущий архив: 2008.02.17;
Скачать: [xml.tar.bz2];

Вниз

Количество уникальных цветов в изображении   Найти похожие ветки 

 
Ricks ©   (2007-03-09 23:03) [0]

Каким образом это можно подсчитать?


 
Sapersky   (2007-03-10 10:56) [1]

Создать массив цветов, пройти по картинке, для каждого пикселя проверить - если его нет в массиве, увеличить счётчик, занести цвет в массив. Например, так:
(http://sourceforge.net/project/showfiles.php?group_id=173551)

function Count24(Bmp:TFastDIB):Integer;
type
 PCheck =^TCheck;
 TCheck = array[Byte,Byte,0..31]of Byte;
var
 pb: PByte;
 pc: PFColor;
 Check: PCheck;
 x,y,c: Integer;
begin
 Result:=0;
 New(Check);
 FillChar(Check^,SizeOf(TCheck),0);
 pc:=Pointer(Bmp.Bits);
 for y:=0 to Bmp.AbsHeight-1 do begin
   for x:=0 to Bmp.Width-1 do begin
     pb:=@Check[pc.r,pc.g,pc.b shr 3];
     c:=1 shl(pc.b and 7);
     if(c and pb^)=0 then begin
       Inc(Result);
       pb^:=pb^ or c;
     end;
     Inc(pc);
   end;
   pc:=Ptr(Integer(pc)+Bmp.Gap);
 end;
 Dispose(Check);
end;

Массив [Byte,Byte,0..31] of Byte - это, в некотором смысле, эмуляция массива [Byte,Byte,Byte] of Bit. Можно написать просто [Byte,Byte,Byte] of Byte, но тогда функция потребует 16 мб памяти вместо 2.
Можно попробовать одномерный динамический массив цветов, памяти потребуется меньше, но будет намного медленнее.


 
Ricks ©   (2007-03-10 12:06) [2]

Спасибо, попробую!


 
SamBrook ©   (2007-03-10 12:53) [3]

В XnView есть соответствующая утилита


 
Сотрудник деканата   (2007-03-12 10:13) [4]

Неопримизированный вариант для TBitmap
http://kladovka.net.ru/delphibase/?action=viewfunc&topic=mediaimg&id=10173



Страницы: 1 вся ветка

Форум: "Media";
Текущий архив: 2008.02.17;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.45 MB
Время: 0.323 c
2-1201043279
Тимоха
2008-01-23 02:07
2008.02.17
движение формы


15-1199947531
saNat
2008-01-10 09:45
2008.02.17
Настройка NAT (?)


2-1200973467
Dina
2008-01-22 06:44
2008.02.17
Массив в Delphi


1-1194517113
DDDeN
2007-11-08 13:18
2008.02.17
Реализация механизма расписания


2-1201508491
HITMAN
2008-01-28 11:21
2008.02.17
Работа с таблицей (баз данных)





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский