Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.03.06;
Скачать: CL | DM;

Вниз

Как   Найти похожие ветки 

 
ivanivan ©   (2002-11-19 06:40) [0]

Есть картинка определенного размера. Как оставить только тот цвет, которого меньше всего на картинке, перекрасить его в черный, а все остальные в белый?

Если можно превидите пример

Заранее спасибо!!!


 
MBo ©   (2002-11-19 07:39) [1]

Придется пробежать по всем пикселам, посчитать количество.
Долго - Canvas.Pixels[]
Быстрее - ScanLine


 
ivanivan ©   (2002-11-19 08:32) [2]

Вообще я примерно так и представлял это себе, но как КОНКРЕТНО ?
Можно кусок исходняка?


 
MBo ©   (2002-11-19 08:52) [3]

пример в хелпе на scanline имеется


 
Fenik ©   (2002-11-24 11:40) [4]

Попробуй изменить следующую ф-ю, так чтобы она считала самый редкий цвет и возвращала его. Потом снова проходишь каждый пиксель и если он совпадает с найденным оставляешь а если нет - заменяешь на некоторый.


{ **** UBPFD *********** by delphibase.endimus.com ****
>> Функция возвращает колличество уникальных цветов Bitmap

Зависимости: Graphics
Автор: Nikolas Chook, chook_nu@uraltc.ru, Новоуральск
Copyright: Собственное написание (Николай федоровских)
Дата: 1 июня 2002 г.
***************************************************** }

function HowManyColors(Bitmap: TBitmap): Integer;
type
TRGB = record
B, G, R: Byte;
end;
pRGB = ^TRGB;

var i: Byte;
x, y: Integer;
Dest: pRGB;
RGBArray: array [0..255, 0..255] of array of Byte;
begin
Bitmap.PixelFormat := pf24Bit;
Result := 0;
for y := 0 to Bitmap.Height - 1 do begin
Dest := Bitmap.ScanLine[y];
for x := 0 to Bitmap.Width - 1 do begin
with Dest^ do
if RGBArray[r, g] <> nil then
for i := 0 to High(RGBArray[r, g]) do begin
//если такой цвет уже есть, то выходим из цыкла
if RGBArray[r, g] [i] = b then Break;
//если это последний круг цикла, то такого цвета нет
if i = High(RGBArray[r, g]) then begin
Inc(Result); //прибавляем один цвет
SetLength(RGBArray[r, g], Length(RGBArray[r, g]) + 1);
RGBArray[r, g] [High(RGBArray[r, g])] := b;
end;
end
else begin
Inc(Result);
SetLength(RGBArray[r, g], 1);
RGBArray[r, g] [0] := b;
end;
Inc(Dest);
end;
end;
end;



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

Текущий архив: 2003.03.06;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.02 c
14-17281
Flashas
2003-02-19 10:59
2003.03.06
gde mozno naiti prislat Delphi 6


3-16872
wara
2003-02-13 15:15
2003.03.06
Загрузка данных в БД из Internet-Explorer


14-17377
SeNtiMeL
2003-02-15 01:15
2003.03.06
Обработка сообщения WM_SYSCOMMAND !!!!


14-17389
ZeroDivide
2003-02-15 09:02
2003.03.06
Купил новое железо. Не работает проклятое. Что сним?


1-17163
XEr
2003-02-23 20:23
2003.03.06
HotKey