Форум: "Media";
Текущий архив: 2003.03.06;
Скачать: [xml.tar.bz2];
ВнизКак Найти похожие ветки
← →
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 вся ветка
Форум: "Media";
Текущий архив: 2003.03.06;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.012 c