Вверх ↑
Этот топик читают: Гость
Ответов: 305
Рейтинг: 4
#1: 2012-09-02 15:47:02 ЛС | профиль | цитата
Как можно менять в изображениях яркость и контрастность?
Вот схема: code_28936.txt
карма: 0

0
файлы: 1code_28936.txt [1.2KB] [108]
Ответов: 1043
Рейтинг: 33
#2: 2012-09-02 15:57:48 ЛС | профиль | цитата
Так яркость
Add(MainForm,487693,35,112)
{
link(onCreate,5397631:doExecute,[])
}
Add(Gamma,8617403,294,196)
{
link(onResult,13987072:doWork2,[])
link(Bitmap,5327343:Bitmap,[])
link(Level,16001279:Position,[(307,184)(265,184)(265,240)(223,240)])
}
Add(Image,13290611,357,196)
{
Left=55
Top=20
Width=260
Height=200
}
Add(ScrollBar,16001279,217,196)
{
Left=60
Top=235
Width=255
Max=100
Position=50
link(onPosition,8617403:doGamma,[])
}
Add(Bitmap,5327343,294,126)
{
}
Add(ODialog,5397631,112,126)
{
link(onExecute,1363237:doLoad,[])
}
Add(Img_Loader,1363237,175,126)
{
link(onLoad,16515861:doEvent1,[])
}
Add(Hub,16515861,238,126)
{
link(onEvent1,5327343:doLoad,[])
link(onEvent2,13987072:doWork1,[(340,139)])
}
Add(HubEx,13987072,336,196)
{
link(onEvent,13290611:doLoad,[])
}

карма: 0

0
Ответов: 305
Рейтинг: 4
#3: 2012-09-02 16:02:26 ЛС | профиль | цитата
Яркость то что надо, спасибо
А на счет негатива я знаю как. Я хотел именно контрастность. Как в паинтнете или фотошопе
карма: 0

0
Ответов: 1043
Рейтинг: 33
#4: 2012-09-02 16:05:41 ЛС | профиль | цитата
mmmmm писал(а):
А на счет негатива я знаю

[offtop]ой, напутал...извини[/offtop]
карма: 0

0
Ответов: 305
Рейтинг: 4
#5: 2012-09-02 18:38:11 ЛС | профиль | цитата
Да ничего
Можешь подсказать как сделать?
------------ Дoбавленo в 18.37:
Если можно сделать контрастность, скажите каким элементом это сделать, я сам дальше разберусь
карма: 0

0
Ответов: 1043
Рейтинг: 33
#6: 2012-09-02 18:51:43 ЛС | профиль | цитата
mmmmm писал(а):
скажите каким элементом это сделать, я сам дальше разберусь

lnLineCode
карма: 0

1
Голосовали:Ex_
Ответов: 1173
Рейтинг: 49
#7: 2012-09-02 20:41:36 ЛС | профиль | цитата
mmmmm писал(а):
каким элементом
ashkalov писал(а):
lnLineCode
Ещё это пригодится.
карма: 0

0
Ответов: 1043
Рейтинг: 33
#8: 2012-09-02 20:51:15 ЛС | профиль | цитата
Ex_ писал(а):
Ещё это пригодится.

[offtop]нужны еще библиотека mozg.dll и модуль rukineizjopi.pas [/offtop]
------------ Дoбавленo в 20.50:

ashkalov писал(а):
Ещё это пригодится.

[offtop]Ex_, не сразу понял сакральный смысл на картинке с права [/offtop]
карма: 0

0
Ответов: 305
Рейтинг: 4
#9: 2012-09-02 21:15:26 ЛС | профиль | цитата
Ex_ писал(а):
Ещё это пригодится.

Для этого нужно знать немного дельфи, и как его использовать в hiasm-е, чего я не умею.
Может быть есть у кого готовый вариант?
------------ Дoбавленo в 21.12:
Вот нашел готовый кодец, не знаю как его в хиасм записать
http://www.delphisources.ru/pages/faq/base/bmp_contrast.html
------------ Дoбавленo в 21.14:
Как то так начал
Пример кода
Add(InlineCode,16646685,413,273)
{
DataPoints=#5:Value|
Code=#55:{ **** UBPFD *********** by delphibase.endimus.com ****|38:>> Изменение контрастности изображения|0:|53:Value - значение контрастности на отрезке [-100..100]|53:Local - если True, то применяется "местный контраст",|41:если False, то - "общий" (более красивый)|0:|20:Зависимости: Windows|51:Автор: Fenik, chook_nu@uraltc.ru, Новоуральск|32:Copyright: Николай Федоровских|28:Дата: 14 июля 2003 г.|55:***************************************************** }|0:|68:procedure Contrast(Bitmap: TBitmap; Value: Integer; Local: Boolean);|0:|36: function BLimit(B: Integer): Byte;|7: begin|17: if B < 0 then|17: Result := 0|24: else if B > 255 then|19: Result := 255|8: else|18: Result := B;|6: end;|0:|3:var|19: Dest: pRGBTriple;|19: x, y, mr, mg, mb,|30: W, H, tr, tg, tb: Integer;|13: vd: Double;|0:|5:begin|19: if Value = 0 then|9: Exit;|24: W := Bitmap.Width - 1;|25: H := Bitmap.Height - 1;|15: if Local then|7: begin|14: mR := 128;|14: mG := 128;|14: mB := 128;|5: end|6: else|7: begin|12: tr := 0;|12: tg := 0;|12: tb := 0;|22: for y := 0 to H do|9: begin|33: Dest := Bitmap.ScanLine[y];|24: for x := 0 to W do|11: begin|21: with Dest^ do|13: begin|28: Inc(tb, rgbtBlue);|29: Inc(tg, rgbtGreen);|27: Inc(tr, rgbtRed);|12: end;|18: Inc(Dest);|10: end;|8: end;|30: mB := Trunc(tb / (W * H));|30: mG := Trunc(tg / (W * H));|30: mR := Trunc(tr / (W * H));|6: end;|19: if Value > 0 then|26: vd := 1 + (Value / 10)|6: else|34: vd := 1 - (Sqrt(-Value) / 10);|20: for y := 0 to H do|7: begin|31: Dest := Bitmap.ScanLine[y];|22: for x := 0 to W do|9: begin|19: with Dest^ do|11: begin|61: rgbtBlue := BLimit(mB + Trunc((rgbtBlue - mB) * vd));|63: rgbtGreen := BLimit(mG + Trunc((rgbtGreen - mG) * vd));|59: rgbtRed := BLimit(mR + Trunc((rgbtRed - mR) * vd));|10: end;|16: Inc(Dest);|8: end;|6: end;|19:end;unit HiAsmUnit;|0:|9:interface|0:|21:uses kol,Share,Debug;|0:|4:type|28: THiAsmClass = class(TDebug)|10: private|0:|9: public|0:|5: end;|0:|14:implementation|0:|4:end.|
}


карма: 0

0
Ответов: 16884
Рейтинг: 1239
#10: 2012-09-02 21:40:46 ЛС | профиль | цитата
mmmmm писал(а):
Как то так начал
Как-то так начинать нельзя.
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Ответов: 8961
Рейтинг: 824
#11: 2012-09-02 21:40:54 ЛС | профиль | цитата
mmmmm, ну а по точкам пробежать, хотя и не быстро, но без IC (кнопка "Yes!" -- принять сделанные изменения )
карма: 19

0
Ответов: 16884
Рейтинг: 1239
#12: 2012-09-02 21:42:10 ЛС | профиль | цитата
Леонид писал(а):
brightnesscontrast.rar [0Kb ]

карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Ответов: 1043
Рейтинг: 33
#13: 2012-09-02 21:43:22 ЛС | профиль | цитата
Леонид, перезалей архив
карма: 0

0
Ответов: 8961
Рейтинг: 824
#14: 2012-09-02 21:56:11 ЛС | профиль | цитата
ashkalov писал(а):
перезалей

А вот и не заливается, блин, пойду на Яндекс, облачный диск на халяву дают
------------ Дoбавленo в 21.54:

Add(MainForm,2953706,602,63)
{
Width=685
Height=351
link(onCreate,13368101:doCreate,[(642,83)(642,34)])
}
Add(ImageLoader,4434340,413,56)
{
DrawSource=2
link(onLoad,4434340:doDraw,[(449,62)(449,48)(401,48)(401,69)])
link(onDraw,7766277:doWork2,[])
}
Add(HubEx,16714778,385,56)
{
link(onEvent,4434340:doLoad,[])
}
Add(ClipboardHook,92140,413,112)
{
link(onBitmap,7766277:doWork3,[(459,125)])
}
Add(ODialog,5049552,308,56)
{
Filter="*"
FileName=""
Select=1
link(onExecute,16714778:doWork2,[])
}
Add(Button,53888,266,56)
{
Left=15
Top=265
Width=75
Height=25
Font=[Arial,8,0,0,1]
TabOrder=-1
Caption="Open"
link(onClick,5049552:doExecute,[])
}
Add(DropFile,97222,350,21)
{
link(onDropFile,16714778:doWork1,[(389,27)])
}
Add(Image,85720,504,63)
{
Left=5
Top=5
Width=320
Height=240
Color=12639424
Point(ImageWidth)
Point(ImageHeight)
}
Add(ScrollBar,3767771,266,168)
{
Left=380
Top=280
Width=200
Max=255
Position=128
ScrollMode=1
link(onPosition,2609585:doCalc,[])
}
Add(HubEx,7766277,455,63)
{
link(onEvent,11886331:doEvent1,[])
}
Add(Image,2833265,770,203)
{
Left=335
Top=5
Width=320
Height=240
Color=15780518
link(Bitmap,8309051:Var2,[])
}
Add(Button,14229856,266,14)
{
Left=595
Top=275
Caption="Yes!"
link(onClick,10055245:doData,[])
}
Add(For,9386032,455,168)
{
IncludeEnd=1
link(onEvent,13055987:doFor,[])
link(onStop,2833265:doLoad,[(495,181)(495,209)])
link(End,718564:Var2,[(468,132)(517,132)])
}
Add(For,13055987,511,168)
{
IncludeEnd=1
link(onEvent,14666566:doGetPixel,[])
link(End,8717990:Var2,[])
}
Add(Img_GetPoint,14666566,560,168)
{
link(onGetPixel,1155705:doGetRGB,[])
link(Bitmap,598437:Var2,[])
link(X,2741147:Var2,[])
link(Y,1769588:Var2,[])
}
Add(ToRGB,1155705,609,168)
{
link(onResult,6161928:doCalc,[])
}
Add(Math,6420317,378,168)
{
OpType=3
Op2=128
link(onResult,9386032:doFor,[])
link(Op1,3767771:Position,[(384,158)(314,158)(314,212)(272,212)])
}
Add(Math,12375106,623,273)
{
OpType=2
ResultType=0
link(onResult,1899266:doCompare,[])
link(Op1,13425659:Var2,[])
link(Op2,8594737:Var3,[(636,222)])
}
Add(If_else,1899266,665,273)
{
Type=1
Op2=Integer(255)
link(onTrue,16287829:doValue,[])
link(onFalse,16287829:doClear,[])
}
Add(Memory,16287829,714,273)
{
Default=Integer(255)
link(onData,421639:doOperation,[(756,279)(756,311)(611,311)(611,328)])
}
Add(Math,421639,623,322)
{
OpType=2
ResultType=0
link(onResult,11964020:doCompare,[])
link(Op1,7628031:Var2,[(629,282)(622,282)])
link(Op2,7521742:Var3,[(636,313)])
}
Add(If_else,11964020,665,322)
{
Type=1
Op2=Integer(255)
link(onTrue,5116251:doValue,[])
link(onFalse,5116251:doClear,[])
}
Add(Memory,5116251,714,322)
{
Default=Integer(255)
link(onData,10431664:doOperation,[(758,328)(758,363)(611,363)(611,377)])
}
Add(Math,10431664,623,371)
{
OpType=2
ResultType=0
link(onResult,3917180:doCompare,[])
link(Op1,16220308:Var2,[(629,331)(615,331)])
link(Op2,7521742:Var2,[(636,360)(608,360)])
}
Add(If_else,3917180,665,371)
{
Type=1
Op2=Integer(255)
link(onTrue,14721583:doValue,[])
link(onFalse,14721583:doClear,[])
}
Add(Memory,14721583,714,371)
{
Default=Integer(255)
link(onData,10522818:doRGB,[])
}
Add(GetDataEx,8594737,602,217)
{
Angle=3
link(Data,6420317:Result,[(384,222)])
}
Add(GetDataEx,7521742,602,308)
{
link(Data,8594737:Var2,[])
}
Add(RGB,10522818,770,371)
{
link(onRGB,6980058:doWork2,[])
link(G,5116251:Value,[(783,359)(720,359)])
link(B,16287829:Value,[(790,316)(720,316)])
}
Add(Hub,11886331,469,63)
{
OutCount=3
link(onEvent1,85720:doLoad,[])
link(onEvent2,16310176:doEvent1,[(493,76)(493,20)])
link(onEvent3,5789101:doCreate,[(493,83)(493,118)])
}
Add(Img_Point,12872541,826,175)
{
Point(X)
Point(Y)
Point(Color)
link(Bitmap,8309051:Var3,[(832,136)])
link(X,2741147:Var3,[(839,149)])
link(Y,1769588:Var3,[(846,144)])
}
Add(GetDataEx,2741147,567,144)
{
Angle=3
link(Data,9386032:Position,[(553,149)(553,213)(461,213)])
}
Add(GetDataEx,1769588,574,139)
{
Angle=3
link(Data,13055987:Position,[(547,144)(547,203)(517,203)])
}
Add(Bitmap,5789101,770,98)
{
Point(HWidth)
Point(HHeight)
Point(doCreate)
link(HWidth,718564:Var3,[(776,88)(763,88)(763,110)])
link(HHeight,8717990:Var3,[(783,84)(758,84)(758,103)])
}
Add(GetDataEx,8309051,770,131)
{
link(Data,5789101:Bitmap,[])
}
Add(GetDataEx,718564,511,105)
{
link(Data,85720:ImageWidth,[])
}
Add(GetDataEx,8717990,518,98)
{
link(Data,85720:ImageHeight,[])
}
Add(If_else,8154642,553,273)
{
Op2=Integer(0)
link(onTrue,12375106:doOperation,[])
link(onFalse,1014337:doCompare,[(595,286)(595,316)(253,316)(253,286)])
link(Op1,16471770:Selected,[(559,266)(546,266)(546,311)(510,311)])
}
Add(If_else,7550904,462,329)
{
Type=1
Op2=Integer(255)
link(onTrue,9354052:doValue,[])
link(onFalse,9354052:doClear,[])
}
Add(Memory,9354052,511,329)
{
Default=Integer(255)
link(onData,4270501:doCompare,[(557,335)(557,365)(250,365)(250,398)])
}
Add(If_else,14479406,462,378)
{
Type=1
Op2=Integer(255)
link(onTrue,2072299:doValue,[])
link(onFalse,2072299:doClear,[])
}
Add(Memory,2072299,511,378)
{
Default=Integer(255)
link(onData,343928:doCompare,[(550,384)(550,463)(253,463)(253,496)])
}
Add(If_else,5574525,462,476)
{
Type=1
Op2=Integer(255)
link(onTrue,15588707:doValue,[])
link(onFalse,15588707:doClear,[])
}
Add(Memory,15588707,511,476)
{
Default=Integer(255)
link(onData,11202881:doRGB,[(559,482)(559,440)])
}
Add(Bitmap,13368101,651,14)
{
HWidth=1
HHeight=1
Point(doCreate)
}
Add(Resize,3152193,602,14)
{
Width=1
Height=1
link(onResult,13368101:doLoad,[])
link(Bitmap,598437:Var1,[(608,7)(566,7)])
}
Add(GetDataEx,598437,560,132)
{
Angle=3
link(Data,14127836:Var2,[(510,137)])
}
Add(Hub,16310176,574,14)
{
OutCount=3
link(onEvent1,3152193:doResize,[])
link(onEvent3,10230683:doGetPixel,[(593,34)(593,62)])
}
Add(Img_GetPoint,10230683,651,56)
{
link(onGetPixel,5584355:doGetRGB,[(694,62)(694,41)])
link(Bitmap,13368101:Bitmap,[])
}
Add(ToRGB,5584355,700,35)
{
link(onResult,16497987:doCalc,[])
}
Add(RGB,11202881,574,434)
{
link(onRGB,6980058:doWork3,[(814,440)])
link(G,2072299:Value,[(587,419)(517,419)])
link(B,9354052:Value,[(594,370)(517,370)])
}
Add(HubEx,6980058,810,371)
{
Angle=3
link(onEvent,12872541:doDraw,[(814,181)])
}
Add(RadioButton,11869215,455,273)
{
Left=275
Top=260
Width=75
Selected=0
Caption="Яркость"
}
Add(RadioButton,16471770,504,273)
{
Left=275
Top=285
Width=95
Caption="Контрастность"
}
Add(GetDataEx,16220308,609,252)
{
link(Data,1155705:R,[])
}
Add(GetDataEx,7628031,616,245)
{
link(Data,1155705:G,[])
}
Add(GetDataEx,13425659,623,238)
{
link(Data,1155705:B,[])
}
Add(MathParse,16497987,749,35)
{
DataCount=3
MathStr="(%1 + %2 + %3)/3"
link(X1,5584355:R,[(755,27)(745,27)(745,83)(706,83)])
link(X2,5584355:G,[(762,23)(740,23)(740,78)(713,78)])
link(X3,5584355:B,[(769,18)(736,18)(736,73)(720,73)])
}
Add(If_else,1014337,266,280)
{
Type=2
link(onTrue,14484550:doOperation,[])
link(onFalse,3887843:doOperation,[(305,293)(305,335)])
link(Op1,7028358:Var1,[(272,250)])
link(Op2,4528581:Var1,[(279,263)])
}
Add(Math,14484550,357,280)
{
OpType=2
ResultType=0
link(onResult,3636049:doWork1,[(410,286)])
link(Op1,6590945:Var3,[(363,271)])
link(Op2,12933997:Var1,[(370,271)])
}
Add(Math,3887843,357,329)
{
OpType=3
ResultType=0
link(onResult,3636049:doWork2,[])
link(Op1,6590945:Var2,[(363,320)(349,320)])
link(Op2,15307334:Var1,[(370,320)])
}
Add(If_else,4270501,266,392)
{
Type=2
link(onTrue,4862381:doOperation,[(303,398)(303,384)])
link(onFalse,6207510:doOperation,[(303,405)(303,433)])
link(Op1,2220770:Var1,[(272,369)])
link(Op2,4950250:Var1,[(279,376)])
}
Add(Math,4862381,357,378)
{
OpType=2
ResultType=0
link(onResult,9843527:doWork2,[])
link(Op1,4382125:Var3,[(363,369)])
link(Op2,8236767:Var1,[(370,369)])
}
Add(Math,6207510,357,427)
{
OpType=3
ResultType=0
link(onResult,9843527:doWork3,[(410,433)])
link(Op1,4382125:Var2,[(363,417)(342,417)])
link(Op2,10102159:Var1,[(370,418)])
}
Add(If_else,343928,266,490)
{
Type=2
link(onTrue,7125254:doOperation,[(304,496)(304,482)])
link(onFalse,16306177:doOperation,[(303,503)(303,531)])
link(Op1,2220770:Var2,[(272,473)(321,473)])
link(Op2,4950250:Var2,[(279,478)(328,478)])
}
Add(Math,7125254,357,476)
{
OpType=2
ResultType=0
link(onResult,4997972:doWork2,[])
link(Op1,3510844:Var3,[(363,467)])
link(Op2,1921855:Var1,[(370,467)])
}
Add(Math,16306177,357,525)
{
OpType=3
ResultType=0
link(onResult,4997972:doWork3,[(410,531)])
link(Op1,3510844:Var2,[(363,518)(335,518)])
link(Op2,1921855:Var2,[(370,518)(398,518)])
}
Add(GetDataEx,1921855,392,462)
{
link(Data,10102159:Var2,[])
}
Add(GetDataEx,10102159,392,413)
{
link(Data,8236767:Var2,[])
}
Add(GetDataEx,8236767,392,364)
{
link(Data,15307334:Var2,[])
}
Add(GetDataEx,15307334,392,315)
{
link(Data,12933997:Var2,[])
}
Add(GetDataEx,12933997,392,266)
{
link(Data,2609585:Result,[(398,236)(335,236)])
}
Add(GetDataEx,6590945,343,266)
{
link(Data,13425659:Var1,[(349,243)])
}
Add(GetDataEx,4382125,336,364)
{
link(Data,7628031:Var1,[(342,250)])
}
Add(GetDataEx,3510844,329,462)
{
link(Data,16220308:Var1,[(335,257)])
}
Add(GetDataEx,4950250,322,371)
{
link(Data,4528581:Var2,[])
}
Add(GetDataEx,4528581,322,258)
{
Angle=1
link(Data,16497987:Result,[(755,263)])
}
Add(HubEx,3636049,406,329)
{
link(onEvent,7550904:doCompare,[])
}
Add(HubEx,4997972,406,476)
{
link(onEvent,5574525:doCompare,[])
}
Add(HubEx,9843527,406,378)
{
link(onEvent,14479406:doCompare,[])
}
Add(MathParse,6161928,665,168)
{
DataCount=3
MathStr="(%1 + %2 + %3)/3"
link(onResult,8154642:doCompare,[(708,174)(708,237)(541,237)(541,279)])
link(X1,16220308:Var3,[(671,160)(658,160)(658,257)])
link(X2,7628031:Var3,[(678,156)(652,156)(652,250)])
link(X3,13425659:Var3,[(685,152)(645,152)(645,243)])
}
Add(GetDataEx,2220770,315,364)
{
link(Data,7028358:Var2,[])
}
Add(GetDataEx,7028358,315,245)
{
link(Data,6161928:Result,[(321,229)(671,229)])
}
Add(MathParse,2609585,329,168)
{
DataCount=1
MathStr="(%1+1000)/1128"
link(onResult,6420317:doOperation,[])
}
Add(DoData,10055245,308,14)
{
link(onEventData,7766277:doWork1,[(459,20)])
link(Data,8309051:Var1,[(314,2)(688,2)(688,136)])
}
Add(Button,1326377,266,119)
{
Left=115
Top=270
Caption="Save"
link(onClick,10793361:doExecute,[])
}
Add(PictureStream,5330589,350,112)
{
link(Bitmap,14127836:Var1,[(363,103)])
}
Add(SDialog,10793361,308,119)
{
link(onExecute,5330589:doSave,[])
}
Add(GetDataEx,14127836,504,98)
{
link(Data,85720:ImageBitmap,[])
}
------------ Дoбавленo в 21.55:
Опять картинками Гигабайты съели!
карма: 19

0
Ответов: 1043
Рейтинг: 33
#15: 2012-09-02 22:06:20 ЛС | профиль | цитата
Леонид, у меня жутко тормозит
карма: 0

0
Сообщение
...
Прикрепленные файлы
(файлы не залиты)