Главная страница
    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.007 c
15-1230995201
абдирофф
2009-01-03 18:06
2009.03.01
помогите разобратся с ошибками при компилировании программы


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


15-1230733143
Slider007
2008-12-31 17:19
2009.03.01
С днем рождения ! 31 декабря 2008 среда


6-1198685585
Lamer666
2007-12-26 19:13
2009.03.01
Проблемы с подсчетом трафика!!!


2-1231958724
Krem
2009-01-14 21:45
2009.03.01
Побайтное чтение





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский