|
|
ru.algorithms- RU.ALGORITHMS ---------------------------------------------------------------- From : Alexander Lezin 2:5059/9.77 30 Mar 2002 01:17:29 To : Dmitriy Shevnin Subject : mono --------------------------------------------------------------------------------
Morituri te salutant, Dmitriy
27 марта 2002 14:52, Dmitriy Shevnin -> All
DS> Поделитесь идеей, плз, кто знает, как можно качественно rgb 24bit в
DS> сабж 1бит переконвертить, чтобы интенсивность передавалась плотностью
DS> точек?
Идея такова: Берешь пиксель. Пусть у него яркость Х. Если Х>=128, то
результат (Х1) будет 255, иначе 0. Разницу (Х1-Х) прибавляешь к яркости
следующего пикселя. Повторяешь. Это самое простое, что я знаю. Можно еще эту
погрешность делить на 2, одну половину прибавлять к следующему пикселю в строке,
а вторую - к пикселю в следующей строке. Имхо результат немного лучше.
Вот примерчик небольшой.
====================
for y:=0 to Bmp1.Height-1 do
Begin
fract:=0;
p1 := Bmp1.ScanLine[y];
p2 := Bmp2.ScanLine[y];
for x:=0 to Bmp1.Width-1 do
Begin
A := Round(0.3*P1[X*3+2] + 0.59*P1[X*3+1] + 0.11*P1[X*3]);
B := A + fract + P3[X];
Bt := (128 shr (X mod 8));
If B >= Mid Then
C := 255 else
C := 0;
If C > 0 Then
P2[X div 8] := P2[X div 8] or Bt else
P2[X div 8] := P2[x div 8] and (NOT Bt);
fract := (B-C) div 2;
P3[X] := fract;
End;
End;
====================
--- Ite, missa est Al
* Origin: Hе пишите длинных писем - у чекистов устают глаза (2:5059/9.77)
Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.algorithms/28993ca4dbae.html, оценка из 5, голосов 10
|