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

Вниз

Как сделать монохромный растр?   Найти похожие ветки 

 
Б   (2009-01-17 21:33) [0]

Не в градациях серого, а монохромный, т.е. состоящий из 2 цветов - черного и белого.


 
KilkennyCat ©   (2009-01-17 21:38) [1]

В смысле, как сделать растр? Из цветного?


 
Б   (2009-01-17 21:41) [2]

> В смысле, как сделать растр? Из цветного?

В смысле наложить эффект на цветной растр.


 
KilkennyCat ©   (2009-01-17 21:44) [3]

все равно пока непонятно.


 
Б   (2009-01-17 21:45) [4]

Обычный TBitmap в формате 24 бит. Чего же тут не понятного?


 
Игорь Шевченко ©   (2009-01-17 21:48) [5]

Учитесь правильно задавать вопросы, например, читая:
http://ln.com.ua/~openxs/articles/smart-questions-ru.html до полного и окончательного просветления.

В противном случае ваши темы будут закрываться без предупреждения.


 
KilkennyCat ©   (2009-01-17 21:54) [6]


> Б   (17.01.09 21:45) [4]

Ну тогда отвечу просто и универсально: нужно использовать clBlack и clWhite. Соответственно первый это 000000, второй - ffffff. исходя из этого можно творить любые эффекты.


 
Anatoly Podgoretsky ©   (2009-01-17 23:23) [7]

Я бы делал через шкалу серого, а потом через порог, например 128, который легко организовать путем маскирования по этому модулю.


 
palva ©   (2009-01-17 23:31) [8]


> а монохромный, т.е. состоящий из 2 цветов - черного и белого.

Монохромный не обязательно должен состоять из двух цветов.


 
Б   (2009-01-17 23:41) [9]

> Монохромный не обязательно должен состоять из двух цветов.

Лично я знаю только две его вариации:
1) В градациях серого (от 0 до 255).
2) Чисто чёрный и белые цвета.

> Я бы делал через шкалу серого

Как её определить, эту самую шкалу серого?


 
palva ©   (2009-01-18 00:01) [10]


> Как её определить, эту самую шкалу серого?

Сам же написал выше - от 0 до 255, т. е.:
type TMonoColor = (0..255);
Ну а растр будет массивом:
type TRastr = array [1..600] of array [1..800] of TMonoColor;


 
{RASkov} ©   (2009-01-18 00:14) [11]

> [4] Б   (17.01.09 21:45)

TBitmap.Monochrome = True ?


 
antonn ©   (2009-01-18 00:57) [12]

если грубо:
procedure PrepareBitmapLevel(_B_out:Tbitmap; Lr,Lg,Lb:byte; _b:boolean);
const Pixels = MaxInt div SizeOf(TRGBTriple);
type PRGBArray = ^TRGBArray;
    TRGBArray = array[0..Pixels-1] of TRGBTriple;
var x, y: Integer; RowOut: PRGBArray;
begin
 _B_out.PixelFormat:=pf24bit;
 for y:=0 to _B_out.Height-1 do begin
    RowOut:= _B_out.ScanLine[y];
   for x:=0 to _B_out.Width-1 do begin
      if (RowOut[x].rgbtRed>Lr)and(RowOut[x].rgbtGreen>Lg)and(RowOut[x].rgbtBlue>Lb)and(_ b) then begin
         RowOut[x].rgbtRed:=255;
         RowOut[x].rgbtGreen:=255;
         RowOut[x].rgbtBlue:=255;
      end else
        if (RowOut[x].rgbtRed<Lr)and(RowOut[x].rgbtGreen<Lg)and(RowOut[x].rgbtBlue<Lb)and not(_b) then begin
         RowOut[x].rgbtRed:=255;
         RowOut[x].rgbtGreen:=255;
         RowOut[x].rgbtBlue:=255;
      end;
   end;
 end
end;

для каждого канала задается уровень.


 
Германн ©   (2009-01-18 01:54) [13]

Ещё один пример наличия вопроса при отсутствии задачи!
А без объяснения задачи, невозможно понять что нужно автору.

> antonn ©   (18.01.09 00:57) [12]
> если грубо

А вот грубить не надо!
:)


 
antonn ©   (2009-01-18 02:07) [14]

Не надо лукавить, чтобы не понять, что автору нужно монохромную картинку из "обычной" надо либо быть тупым, либо слишком двоичным и с могучим самомнением.
Кто не видел монохромных - откройте mspaint и посмотрите.


 
Германн ©   (2009-01-18 02:28) [15]


> antonn ©   (18.01.09 02:07) [14]
>
> Не надо лукавить, чтобы не понять, что автору нужно монохромную
> картинку из "обычной" надо либо быть тупым, либо слишком
> двоичным и с могучим самомнением.

А как? По каким алгоритмам преобразовать "обычную" картинку в монохромную? Ты сей алгоритм знаешь? И сей алгоритм "независим" от реальной задачи, в которой требуется данное преобразование?
P.S. Тут ты, Антон, меня разочаровал. :)


 
palva ©   (2009-01-18 11:06) [16]


> А как? По каким алгоритмам преобразовать

Ну взять, к примеру, цветовую схему YCbCr и формулу для вычисления яркости Y.
Y = 0.299R + 0.587G + 0.114B


 
Б   (2009-01-18 11:52) [17]

> antonn ©   (18.01.09 02:07) [14]
Полностью поддерживаю.

> Ещё один пример наличия вопроса при отсутствии задачи!

Какая тут должна быть задача, кроме как преобразовать растр в монохром? ;)

> А как? По каким алгоритмам преобразовать. Ты сей алгоритм знаешь?

Имеется несколько различных стандартов градаций серого.
Короче, готовых формул завались!

> TBitmap.Monochrome = True ?

Растр с ног до головы чёрный при любом формате.
--------------------------------------------------------------------------

В итоге решил преобразовать растр сперва в градации серого, а потом воспользоваться порогом в 128.


 
KilkennyCat ©   (2009-01-18 12:07) [18]


> Какая тут должна быть задача, кроме как преобразовать растр
> в монохром? ;)


Перечитай внимательно свой вопрос. Самый первый. В самом верху. Найди там задачу о преобразовании и ткни меня носом.


 
Б   (2009-01-18 12:37) [19]

Сделать = преобразовать.


 
Anatoly Podgoretsky ©   (2009-01-18 12:45) [20]


> В итоге решил преобразовать растр сперва в градации серого,
>  а потом воспользоваться порогом в 128.

Тут единственная сложность выбрать правильную формулу преобразования, формаула приведеная palva это для отображения на телевизоре или мониторе.


 
Б   (2009-01-18 13:11) [21]

> Тут единственная сложность выбрать правильную формулу преобразования

Я выбрал эту формулу из 5.


 
KilkennyCat ©   (2009-01-18 14:26) [22]


> Б   (18.01.09 12:37) [19]
>
> Сделать = преобразовать.


Да ну?!

Я создал битмап, половину залил белым, половину черным. Удовлетворяет твоему условию?
Напоминаю условие:сделать монохромный растр


 
Б   (2009-01-18 15:00) [23]

> Я создал битмап, половину залил белым, половину черным. Удовлетворяет > твоему условию?

См. слова Антона [14] - всё правильно сказал.


 
KilkennyCat ©   (2009-01-18 16:08) [24]


> Б   (18.01.09 15:00) [23]


Ни я и никто не обязан догадываться, что ты имел ввиду.
См. Игорь Шевченко ©   (17.01.09 21:48) [5]


 
sniknik ©   (2009-01-18 16:20) [25]

> См. слова Антона [14] - всё правильно сказал.
вот только не надо "лукавить" обвиняя в лукавстве остальных...
раскрыл бы твой "Антона" смысл твоего вопроса в первом посте, а не в 14м после уточняющих вопросов/ответов, вот это да, имел бы право, а так... сплошное лукавство.

давай проверку? задаешь вопрос в своем "фирменном" стиле и подписываешь, что исключительные права на ответ у "Антона", чтоб другие случайно не встряли, и пусть он ответит, с первого раза, без доп. вопросов и лукавства...


 
palva ©   (2009-01-18 17:11) [26]

Тупость компьютеров поражает. Они делают то, что написал программист, а не то, что он при этом думал. Хуже того, программисты от долгого общения с компьютерами становятся такими же тупыми. Неудивительно, что остроумным людям никак не удается найти с компьютерами общий язык. Им не помогает даже помощь компьютероподобных тупиц на тупых форумах.


 
Б   (2009-01-18 17:16) [27]

> Ни я и никто не обязан догадываться, что ты имел ввиду.

Твоё право, можешь и не "догадываться".

Фраза "МОНОХРОМНЫЙ РАСТР" уже говорит сама за себя.
Что ты считаешь под понятием монохромного растра? Вот это?


>
> Я создал битмап, половину залил белым, половину черным.
> Удовлетворяет твоему условию?
> Напоминаю условие:сделать монохромный растр


Понятное дело какой именно растр я имею ввиду. Обычным дельфийский
TBitmap или думаете, что это HBitmap, DDB?, цвет - любой (Фильтру без разницы, какой растр он обрабатывает цветной или нет, да и кто, скажите мне на милость, будет чёрно-белый пропускать через фильтр монохромность?).

> вот только не надо "лукавить" обвиняя в лукавстве остальных...

И где я кого то обвиняю?

> а не в 14м после уточняющих вопросов/ответов,

Заметь: был ОДИН вопрос - ОДИН ответ.

> вот это да, имел бы право,

Представим что так, но KilkennyCat и на 22 посте не понял, что требуется.

> раскрыл бы твой "Антона"

Во-первых: он не мой.
Во-вторых: какой смысл писать то, что уже сказали до?
В-третьих: читать склонённые имена удобнее.

> в своем "фирменном"

Чем тебе он не угодил? Какие есть замечания??? Выкладывай, не стесняйся.


 
sniknik ©   (2009-01-18 17:40) [28]

> Представим что так, но KilkennyCat и на 22 посте не понял, что требуется.
да брось, претензии у него именно к первому посту ->
> Перечитай внимательно свой вопрос. Самый первый. В самом верху. Найди там задачу о преобразовании и ткни меня носом.
к тому, что для тебя "Сделать = преобразовать."
а то, что он не понял аж до 22го это ты выдумал. представил желаемое за действительное, как ранее подуманное за сказаное.  
к стати претензии обоснованные т.к. это именно он тебя "раскручивал" на доп инфу по которой annton так лихо все понял...

> Чем тебе он не угодил? Какие есть замечания??? Выкладывай, не стесняйся.
для ответа будем цитировать, тебя же  
> Во-вторых: какой смысл писать то, что уже сказали до?
и И.Ш.
> Учитесь правильно задавать вопросы, например, читая:
> http://ln.com.ua/~openxs/articles/smart-questions-ru.html до полного и окончательного просветления.

> В противном случае ваши темы будут закрываться без предупреждения.

это о повторениях.


 
Б   (2009-01-18 18:20) [29]

> это именно он тебя "раскручивал" на доп инфу

Если ему всё понятно, то какого лешего он ещё спрашивает? (Да и понимать и нечего с 1 поста всё понятно, монохромный растр будто не видели).


 
sniknik ©   (2009-01-18 18:53) [30]

> Если ему всё понятно, то какого лешего он ещё спрашивает?
у него спроси.
но если бы я задавал наводящие вопросы, то хотел бы услышать четкую постановку от автора, убедится что ОН САМ ПОНЯЛ, что ему нужно.

> (Да и понимать и нечего с 1 поста всё понятно, монохромный растр будто не видели).
серьезно нечего? а почему ты тогда согласился на градацию серого вместо монохромного? раз с 1го поста все понятно, а градацию упомянули позже.
чувствуется до сих пор непонимание, и идет оно от тебя.


 
Кое кому   (2009-01-18 19:23) [31]


> то какого лешего он ещё спрашивает?

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


 
KilkennyCat ©   (2009-01-18 19:25) [32]

Кое кому = KilkennyCat. Зашел с чужой машины.


 
Б   (2009-01-19 11:52) [33]

> а почему ты тогда согласился на градацию серого вместо монохромного?

Я и не соглашался.
Мне это не надо, т.к. это уже сделал до того как задал этот вопрос.

В итоге, что получается с решением данного вопроса?
Правильно, СНАЧАЛА ПЕРЕВОДИМ РАСТР В ГРАДАЦИИ СЕРОГО (градация сама всплыла, потому что всё делается именно через неё), а уже потом, при помощи порога, в чёрно-белое. Понятно?
Сделать таким путём сказал Anatoly Podgoretsky [7].
Как видите, про градации я и не заикался и нехрен так говорить.

> ты прочитаешь хотя бы Фэнь Юаня

Обязательно прочитаю. Как время позволит.

> что я в принципе не могу опуститься до твоего примитива работы с графикой

Ты что слепой не видеть - вопрос в ветке "Начинающим" находится?
Не понимать, что я - НОВИЧОК? Только учусь и считаю не плохо.
(Работаю пол-года). Мало по-малу научусь.
Работа через ScanLine - убогий примитив, которым пользуюсь не только я, да?
http://delphimaster.net/view/8-1231354672/
Скажи там, что ScanLine примитив.
Или про простенький фильтр говоришь, подразумевая под примивом?
Или я мало чего представляю о графике? Типа прочитай Юаня, Брусенцова, Григорьева и др., а потом приходи в ветвь "Начинающим".

> однозначные варианты

Тогда, назови не однозначные вариаты и методы, кое кто, причитавший Юаня.


 
Jeer ©   (2009-01-19 12:43) [34]


> Как сделать монохромный растр? [D7, XP]
>
> Б   (17.01.09 21:33)
>
> Не в градациях серого, а монохромный, т.е. состоящий из
> 2 цветов - черного и белого.


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


 
Б   (2009-01-19 13:36) [35]

Я и не выёживаюсь, я отвечаю за заданные мне вопросы.

За Ахроматические спасибо, но суть вопроса не меняется.
В 1 посте я уже оговорил нужный мне вариант - (монохромный, чёрно-белый,
состоит из 2 цветов: чёрного и белого - Что ещё нужно, чтобы понять?)
и он является монохромным в любом случае. (Ахромат - вариация монохромного, как сказано выше).
Претензии?

В общем с вопросом мне всё ясно.


 
{RASkov} ©   (2009-01-19 14:30) [36]

> Что ещё нужно, чтобы понять?)

Дело в том, что задающие вопросы сами порой путаются в терминах, почему бы не уточнить?


 
Б   (2009-01-19 14:55) [37]

> что задающие вопросы сами порой путаются в терминах

Согласен, только не здесь. (Ух ты - правильно написал (на 3 раз)).
Может некоторые считают, что чёрно-белый растр - эта битовый образ в градациях серого (Наверное по старым чёрно-белым фотографиям).
Но я ясно пояснил какой эффект именно мне нужен См. [1].
Для непонятливых См. [35] - тоже самое.

Вот готовая функция.
Запускайте и смотрите, смотрите, и ещё раз смотрите что требовалось.
Внятненько? ;)


Function Monochrome(const BMP: TBitmap; Invert: boolean = False): TBitmap;
Var Gray: TColor;
     x, y: integer;
     Line: PRGBTripleArray;
begin
 Result:= TBitmap.Create;
 Result.PixelFormat:= pf24bit;
 Result.Assign(BMP);

 For y:= 0 to Result.Height - 1 do
 begin
   Line:= Result.ScanLine[y];
   For x:= 0 to Result.Width - 1 do
   With Line[x] do
   begin
     Gray:= round(0.3 * rgbtRed + 0.59 * rgbtGreen + 0.11 * rgbtBlue);
       If Invert then
          If Gray > 127 then Gray:= 0
          else Gray:= 255
       else
          If Gray > 127 then Gray:= 255
          else Gray:= 0;
     rgbtRed  := Gray;
     rgbtGreen:= Gray;
     rgbtBlue := Gray;
   end;
 end;
End;


 
Б   (2009-01-19 14:56) [38]

Удалено модератором


 
KSergey ©   (2009-01-19 15:18) [39]

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


 
Jeer ©   (2009-01-19 16:01) [40]


> Б   (19.01.09 14:55) [37]
>
> > что задающие вопросы сами порой путаются в терминах
>
> Согласен, только не здесь. (Ух ты - правильно написал (на
> 3 раз)).
> Может некоторые считают, что чёрно-белый растр - эта битовый
> образ в градациях серого (Наверное по старым чёрно-белым
> фотографиям).
> Но я ясно пояснил какой эффект именно мне нужен См. [1].
>
> Для непонятливых См. [35] - тоже самое.


Претензия на раз очень проста и исходит из Вашего начального непонимания, того, что Вам надо  - "Не в градациях серого, а монохромный"
Я Вам пояснил [35], что градации серого, это частный случай монохрома.
Черно-белое - частный случай монохрома-градаций серого при числе оттенков 2.
Еще Вы так и не поняли, что уровень деления на градации 128 - это тоже частный случай и это тоже Вами не было оговорено.

Далее, переход от цветовой схемы RGB к монохрому правильнее делать через предварительный переход к HLB(HLS) схемам.
Не обязательно в полном варианте - можно так:

Для Intensity:
result := (rgbtRed + rgbtGreen + rgbtBlue) div 3
либо с масштабными коэффициентами, учитывающими особенности конкретного люминофора, как и было сказано выше.

Для Lightness:
result := (MinIntValue( [rgbtRed, rgbtGreen, rgbtBlue] ) +
                MaxIntValue( [rgbtRed, rgbtGreen, rgbtBlue] ) ) div 2


 
Amoeba ©   (2009-01-19 16:28) [41]


> учитывающими особенности конкретного люминофора

скорее уж различную чувствительность глаза к разным участкам спектра


 
Б   (2009-01-19 16:46) [42]

2 Jeer

Понятно.
Хотел написать примерно такую формулировку: "Как сделать монохромный растр? Не в градациях серого, а такОЙ (ударение на ОЙ) монохромный, в котором всего 2 цвета - чёрный и белый". (Убрал слово "такой").

Если и так, то всё равно ясно.

> Я Вам пояснил [35], что градации серого, это частный случай монохрома.

Знаю. См. [9]

> 128 - это тоже частный случай и это тоже Вами не было оговорено.

Порог нейтральный, т.к. если, пусть будет 50, то границы в изображении все сотрутся (особенно маллозаметные контуры и штрихи), В итогое - чёрно-белое мессиво точек. Поэтому, условно говоря 128 - золотая середина, самый наилучший вариант и оговаривать его, думаю, не было необходимым.

> правильнее делать через предварительный переход к HLB(HLS) схемам.

Формулу выбрал по стандарту YCbCr.  
А можно взять Вашу формулу, формулу стандарта ITU, CCIR 601-1 (VGA)... и др - есть из чего выбирать.


 
Anatoly Podgoretsky ©   (2009-01-19 16:56) [43]

> Amoeba  (19.01.2009 16:28:41)  [41]

Чувствительность глаза не меняется, а вот люминофоры разные, поэтому существуют цветовые профили и разные формулы. Если выбрать неправильную формулу, то монохромное изображение будет отличаться от оригинала и будет отличаться при выводе на разные носители.


 
Anatoly Podgoretsky ©   (2009-01-19 16:58) [44]

> Б  (19.01.2009 16:46:42)  [42]

Не золотая, приложение вообще то должно иметь возможность менять порог. А сложные приложения еще и аппроксимируют, а не тупо по порогу.


 
Б   (2009-01-19 17:26) [45]

> А сложные приложения еще и аппроксимируют, а не тупо по порогу.

Я же не Фотошоп решил писать. ;) Все эти тости в дальнейшем учту, про порог ясно, а про аппроксимацию нет. Да ладно.


 
Sapersky   (2009-01-19 17:49) [46]

про порог ясно, а про аппроксимацию нет

Floyd-Steinberg dithering?
В качестве примера можно использовать компонент TGifImage, правда, Floyd-Steinberg там не вполне корректный, но всё же качество получается лучше, чем совсем без дизеринга.


 
antonn ©   (2009-01-19 22:37) [47]


> KSergey ©   (19.01.09 15:18) [39]
>
> Вот что занятно: у вопрошающего нашлось куча времени и настроения
> брехаться, но не нашлось не понятно чего, чтобы попытаться
> растолковать ему нужный вопрос этим тупицам.
> А у защитников от чего-то не нашлось чего-то, чтобы на вопрос
> ответить (ну или хотя ыб пояснить для тупиц вокруг).

там чуть выше был дан код с наводкой, потом автор уже придумал сам способ и вероятно реализовал его (написав код самостоятельно либо взяв готовый - велосипедов сделано тьма).

В это время его атакуют вопросами наводящими, вероятно для того, чтобы выгородить себя ("Ах, мон сеньор, вы не так задали вопрос, господа просто вас не поняли! А иначе разве мы бы не помогли сударю? дадада") и заодно потыкать носом автора в то, как сильно он не умеет задавать вопросы (ну это чтобы совсем казалось что он виноват больше).
Баян. Много раз.
Если так хочется помочь - почему бы не уточнить? Уточнить так, как это обычно делается в разделе для начинающих на всех цивилизованных ресурсах. Прочитать предыдущую фразу два раза, чтоб понять то, о чем я.
Нет, ну конечно тут никто ничего не обязан (тоже баян, наверное еще больше чем первый), и можно ограничиться парой символов, "остальное в справке найдет", пожалста. Продолжайте в том же духе.
Короче даже лень вырезать цитаты и оспаривать, смысла нет.

Пользователю "Б" рекомендую обращаться на sources.ru или винград если вопрос не сформулирован так, что половину ответа ты знаешь :)


 
Германн ©   (2009-01-20 00:34) [48]


> Пользователю "Б" рекомендую обращаться на sources.ru или
> винград

Присоединяюсь к рекомендации. На тех форумах уже достаточно много участников, которые данный этап уже благополучно прошли, но ещё не потеряли умение понимать подобные "бессвязные" вопросы. :)
Плюс там есть ещё и несколько "гуру", которые относятся к подобным новичкам и их вопросам достаточно "нежно".
P.S. "нежно" (с) не мой, а именно этих гуру. :)
P.P.S. И в чём-то они правы, черт побери.


 
Б   (2009-01-20 07:10) [49]


> Пользователю "Б" рекомендую обращаться на sources.ru или
> винград если вопрос не сформулирован так, что половину ответа
> ты знаешь :)


Лады. ;)
P.S. Дали небольшой толчёк, вот и написал, как говорится "очередной велосипед", но на его сборке можно многому научиться. ;)


 
KilkennyCat ©   (2009-01-20 09:35) [50]


> > Пользователю "Б" рекомендую обращаться на sources.ru или
> > винград
>


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


 
KSergey ©   (2009-01-20 11:10) [51]

> antonn ©   (19.01.09 22:37) [47]

А почему бы вам все ж на вопрос автора-то не ответить?


 
Б   (2009-01-20 11:59) [52]

> А почему бы вам все ж на вопрос автора-то не ответить?

Ответили уже давным давно. ;)

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

Не... лучше средней сложности или легче, я же учусь. ;)

> но КАКАЯ от этого польза - советовал бы задуматься.

Польза? Хм, действительно какая? ;)


 
antonn ©   (2009-01-20 13:35) [53]


> KSergey ©   (20.01.09 11:10) [51]
>
> > antonn ©   (19.01.09 22:37) [47]
>
> А почему бы вам все ж на вопрос автора-то не ответить?

потому что вопрос решен.
и тему от начала можно почитать.


 
antonn ©   (2009-01-20 13:43) [54]

еще один древнющий баян:
procedure PrepareBitmap2colorWithPorog(_B_out:Tbitmap; color1,color2:Tcolor; _persent_level:integer);
var x, y: Integer; RowOut: PRGBArray;
  rc1, bc1, gc1,rc2, bc2, gc2:integer;
begin
 _B_out.PixelFormat:=pf24bit; //&#243;&#225;&#240;&#224;&#242;&#252;, &#229;&#241;&#235;&#232; &#232;&#231;&#237;&#224;&#247;&#224;&#235;&#252;&#237;&#238; &#253;&#242;&#238;&#242; &#244;&#238;&#240;&#236;&#224;&#242;
 rc1:=GetRValue(color1); gc1:=GetGValue(color1); bc1:=GetBValue(color1);
 rc2:=GetRValue(color2); gc2:=GetGValue(color2); bc2:=GetBValue(color2);
 for y:=0 to _B_out.Height-1 do begin
    RowOut:= _B_out.ScanLine[y];
   for x:=0 to _B_out.Width-1 do begin
      if ((RowOut[x].rgbtRed+RowOut[x].rgbtGreen+RowOut[x].rgbtBlue)/3)>(_persent_level/3) then begin
         RowOut[x].rgbtRed:=rc1;
         RowOut[x].rgbtGreen:=gc1;
         RowOut[x].rgbtBlue:=bc1; end else begin
         RowOut[x].rgbtRed:=rc2;
         RowOut[x].rgbtGreen:=gc2;
         RowOut[x].rgbtBlue:=bc2;
      end;
   end;
 end
end;


вместо среднего арифметического запросто подставляется другая формула



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

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

Наверх




Память: 0.64 MB
Время: 0.015 c
2-1232190104
ТАГ
2009-01-17 14:01
2009.03.01
Отчеты Rave


6-1199301814
Danger
2008-01-02 22:23
2009.03.01
HttpQueryInfo: возникает ошибка


4-1206374073
MihaelSA
2008-03-24 18:54
2009.03.01
Пример хука на CreateProcess или ZwCreateProcess


2-1232197869
Любитель
2009-01-17 16:11
2009.03.01
Ошибка при установке


15-1230639901
Чудак
2008-12-30 15:25
2009.03.01
Права на доступ к дирректория юникс