Задача сделать из цветной картинки черно-белую, но без серого цвета — то есть можно использовать только 2 цвета: белый и черный.
Пример выполнения кода можно увидеть в прикрепленном изображении.
Код:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | procedure TForm1 . ButtonClick(Sender: TObject);
var
x, y, kontrast : Integer ;
begin
kontrast := 100 ;
image2 . Width := image1 . Width;
image2 . Height := image1 . Height;
for y := 0 to image1 . Height- 1 do
begin
for x := 0 to image1 . Width- 1 do
begin
if (GetRValue(Image1 . Canvas . Pixels[x, y]) < kontrast) or (GetGValue(Image1 . Canvas . Pixels[x, y]) < kontrast) or (GetBValue(Image1 . Canvas . Pixels[x, y]) < kontrast) then
Image2 . Canvas . Pixels[x, y] := clBlack;
end ;
x := 0 ;
end ;
end ;
|
Проблема в том, что картинка у меня размером 2048х1536 пикселей, то есть цикл выполняется 3 145 728 раз и это занимает примерно 20 секунд. Нужно сделать так, чтобы происходило то же самое, но значительно быстрее. Подскажите пожалуйста как это сделать? Если можно — конкретно кусок кода.
Спасибо!