Главная страница
    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.045 c
15-1200296233
Stilet
2008-01-14 10:37
2008.02.17
Как в VirtualBox настроить виртуальную сеть


3-1191474746
pavel_guzhanov
2007-10-04 09:12
2008.02.17
Ошибка при попытке подключения к БД


2-1200993488
Skyle
2008-01-22 12:18
2008.02.17
Open Tools API и файлы не включенные в проект.


2-1201249539
Res
2008-01-25 11:25
2008.02.17
Char and String


2-1201309790
Artem
2008-01-26 04:09
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
Английский Французский Немецкий Итальянский Португальский Русский Испанский