Вверх ↑
Этот топик читают: Гость
Ответов: 876
Рейтинг: 101
#1: 2009-01-07 06:52:03 ЛС | профиль | цитата
я уже запутался, помогите сделать такую схему

На входе идет картинка разного размера, на выходе должна быть строга 350х350 с сохранением правильных пропорций, там где нада пиксели удаляем или добавляем и закрашиваем их белым цветом
карма: 1

0
Ответов: 3655
Рейтинг: 69
#2: 2009-01-07 07:35:27 ЛС | профиль | цитата
Вот пример.
Когда то делал для конвертирования иконок.
code_11241.txt
карма: 0

0
файлы: 1code_11241.txt [1.8KB] [310]
Ответов: 876
Рейтинг: 101
#3: 2009-01-07 10:44:45 ЛС | профиль | цитата
Вячеслав не то, да и вообще твой пример почемуто не работает.



если кому интересно,


Add(MainForm,2953706,56,77)
{
Width=800
Height=410
}
Add(Button,11705492,56,126)
{
Left=5
Top=5
Caption="load"
link(onClick,16192949:doExecute,[])
}
Add(ODialog,16192949,98,126)
{
link(onExecute,15093867:doEvent1,[])
}
Add(ImageLoader,5302045,273,182)
{
DrawSource=1
link(onLoad,10019013:doEvent1,[(317,188)(317,222)(213,222)(213,195)])
link(FileName,16011513:Value,[])
link(Bitmap,10282388:Var1,[(286,163)])
}
Add(Memory,16011513,273,119)
{
}
Add(Hub,15093867,147,126)
{
OutCount=4
link(onEvent1,16011513:doClear,[])
link(onEvent2,16011513:doValue,[(244,139)(244,125)])
link(onEvent3,5302045:doLoad,[(262,146)(262,188)])
link(onEvent4,5353531:doFileName,[(248,153)(248,283)(177,283)(177,328)])
}
Add(Button,15207672,105,301)
{
Left=5
Top=30
Caption="save"
link(onClick,12167460:doEvent1,[])
}
Add(Memory,78851,273,308)
{
}
Add(Hub,11856179,238,315)
{
OutCount=3
link(onEvent1,78851:doClear,[])
link(onEvent2,78851:doValue,[(262,328)(262,314)])
link(onEvent3,201923:doSave,[(264,335)(264,391)])
}
Add(SDialog,5353531,189,315)
{
Filter="*.jpg"
Point(doFileName)
link(onExecute,11856179:doEvent1,[])
}
Add(Jpeg,201923,455,378)
{
Quality=85
Point(FileName)
Point(doLoadFromBitmap)
link(FileName,78851:Value,[(461,362)(279,362)])
}
Add(DoData,7938655,392,301)
{
link(onEventData,201923:doLoadFromBitmap,[(436,307)(436,398)])
link(Data,15716393:ImageBitmap,[])
}
Add(Hub,12167460,147,301)
{
link(onEvent1,7938655:doData,[])
link(onEvent2,5353531:doExecute,[(175,314)(175,321)])
}
Add(Hub,10019013,224,189)
{
OutCount=3
link(onEvent1,5302045:doDraw,[])
}
Add(ChildPanel,1861056,364,119)
{
}
BEGIN_SDK
Add(EditMulti,13645886,21,21)
{
VarCount=1
link(Var1,12368982:Handle,[(27,141)(34,141)])
}
Add(Panel,12368982,28,28)
{
Left=420
Top=5
Width=350
Height=350
Color=16777215
BorderWidth=0
BevelInner=0
BevelWidth=0
Point(Handle)
}
END_SDK
Add(ScreenShort,3009942,350,231)
{
link(Handle,10282388:Var2,[])
link(onCapture,15716393:doLoad,[])
}
Add(Button,13503184,294,231)
{
Left=5
Top=355
Width=80
link(onClick,3009942:doCapture,[])
}
Add(GetDataEx,10282388,343,154)
{
Angle=1
link(Data,1861056:Var1,[(370,163)])
}
Add(Image,15716393,392,231)
{
Left=5
Top=55
Width=155
Height=155
}

а может вам еще удасться ее упростить
------------ Дoбавленo:

одно фигово, маленькие изображения растягиваются
карма: 1

0
файлы: 11.jpg [48.3KB] [333]
Ответов: 1304
Рейтинг: 405
#4: 2009-01-07 14:18:45 ЛС | профиль | цитата
flud писал(а):
На входе идет картинка разного размера, на выходе должна быть строга 350х350 с сохранением правильных пропорций, там где нада пиксели удаляем или добавляем и закрашиваем их белым цветом

flud, вот примерно так.

Add(MainForm,3597084,14,63)
{
Width=440
Height=388
Position=1
Point(Handle)
link(onCreate,10974043:doPopup,[(54,83)(54,139)])
}
Add(Button,11705492,14,14)
{
Left=5
Top=5
Caption="load"
link(onClick,16192949:doExecute,[])
}
Add(ODialog,16192949,56,14)
{
link(onExecute,15093867:doEvent1,[])
}
Add(ImageLoader,5302045,203,70)
{
DrawSource=2
link(onLoad,6778422:doEvent1,[(240,76)(240,64)(115,64)(115,104)])
link(onDraw,14459975:doResize,[(277,83)(277,125)])
link(FileName,16011513:Value,[])
}
Add(Memory,16011513,203,7)
{
}
Add(Hub,15093867,98,14)
{
InCount=2
OutCount=5
link(onEvent2,13126124:doData,[])
link(onEvent3,16011513:doValue,[(152,34)(152,13)])
link(onEvent4,5302045:doLoad,[(166,41)(166,76)])
}
Add(Button,15207672,14,154)
{
Left=5
Top=30
Caption="save"
}
Add(Math,3471431,210,140)
{
OpType=3
link(onResult,6113846:doCompare,[])
link(Op1,5346319:Var2,[(216,136)(209,136)])
link(Op2,15528395:Var2,[(223,132)(230,132)])
}
Add(Hub,6778422,119,98)
{
link(onEvent1,3471431:doOperation,[(181,104)(181,146)])
link(onEvent2,5302045:doDraw,[(177,111)(177,83)])
}
Add(DropFile,151683,56,63)
{
link(onDropFile,15093867:doEvent2,[(93,69)(93,27)])
}
Add(If_else,6113846,259,140)
{
Type=2
Op2=Integer(1)
link(onTrue,13099649:doValue,[(299,146)(299,97)])
}
Add(Math,16739222,315,140)
{
OpType=3
Op1=350
link(onResult,8894434:doValue,[(397,146)(397,62)])
link(Op2,13099649:Value,[(328,132)(321,132)])
}
Add(Memory,13099649,315,91)
{
link(onData,16739222:doOperation,[(359,97)(359,121)(303,121)(303,146)])
}
Add(Math,14659546,210,231)
{
OpType=3
link(onResult,10954858:doCompare,[])
link(Op1,15528395:Var1,[(216,176)(199,176)(199,121)])
link(Op2,5346319:Var1,[(223,182)(192,182)(192,128)])
}
Add(If_else,10954858,259,231)
{
Type=2
Op2=Integer(1)
link(onTrue,10852827:doValue,[(299,237)(299,188)])
}
Add(Math,8396895,315,231)
{
OpType=3
Op1=350
link(onResult,10288598:doValue,[(377,237)(377,48)])
link(Op2,10852827:Value,[(328,223)(321,223)])
}
Add(Memory,10852827,315,182)
{
link(onData,8396895:doOperation,[(359,188)(359,212)(303,212)(303,237)])
}
Add(GetDataEx,15528395,217,112)
{
link(Data,5302045:ImageHeight,[(230,109)(223,109)])
}
Add(GetDataEx,5346319,196,119)
{
link(Data,5302045:ImageWidth,[(209,113)(216,113)])
}
Add(Resize,14459975,406,119)
{
link(onResult,1396083:doLoad,[])
link(Width,10288598:Value,[(419,103)(412,103)])
link(Height,8894434:Value,[(426,103)(454,103)])
}
Add(Memory,10288598,406,42)
{
Default=Integer(350)
}
Add(Memory,8894434,448,56)
{
Default=Integer(350)
}
Add(Image,1396083,462,119)
{
Left=75
Top=5
Width=350
Height=350
Color=16777215
Ctl3D=0
ViewStyle=0
}
Add(DoData,13126124,266,21)
{
Data=Integer(350)
link(onEventData,10951550:doEvent1,[])
}
Add(Hub,10951550,315,21)
{
link(onEvent1,10288598:doClear,[(373,27)(373,55)])
link(onEvent2,8894434:doClear,[(366,34)(366,69)])
}
Add(WinTools,10974043,63,126)
{
link(Handle,3597084:Handle,[(69,110)(20,110)])
}
Сохранение картинки проблем думаю не вызовет.

карма: 3

1
Голосовали:flud
Ответов: 876
Рейтинг: 101
#5: 2009-01-07 15:27:05 ЛС | профиль | цитата
MAV спасибо, но у меня почти точно такая же схема и в ней есть минус, если картинка меньше 350х350 то она растягивается.
карма: 1

0
Ответов: 8928
Рейтинг: 823
#6: 2009-01-07 15:32:54 ЛС | профиль | цитата
MAV, именно при сохранении размеры по картинке, а не по зкрану
flud, не расстраивайся, на HiAsm всё можно! code_11248.txt
При выкладывании схемы на всеобщее обозрение старайтесь привести её в божеский вид, не нагружайте своих коллег путаницей проводов!
карма: 19

0
файлы: 1code_11248.txt [5KB] [272]
Ответов: 876
Рейтинг: 101
#7: 2009-01-07 17:16:10 ЛС | профиль | цитата
Леонид, при вставке твое темы вылезает ерор


карма: 1

0
файлы: 1pfff1122.jpg [34.1KB] [169]
Ответов: 8928
Рейтинг: 823
#8: 2009-01-07 17:35:04 ЛС | профиль | цитата
flud, скачал и запустил:
карма: 19

0
Ответов: 876
Рейтинг: 101
#9: 2009-01-07 18:16:16 ЛС | профиль | цитата
Да вроде как то заставил заработать, но проблема вся таже, если картинка меньше заданного размера то она растягивается, (см.рис) с лева как надо, с право как получается.
карма: 1

0
файлы: 1prtsc.jpg [63.7KB] [260]
Ответов: 3514
Рейтинг: 184
#10: 2009-01-07 18:28:45 ЛС | профиль | цитата
сначала определяй размер картинки, если он меньше определенного, то не изменяй..
карма: 0
0
Ответов: 1304
Рейтинг: 405
#11: 2009-01-07 18:40:27 ЛС | профиль | цитата
flud писал(а):
если картинка меньше 350х350 то она растягивается

flud, сделал вариант, если меньше 350х350, то картинка не трансформируетя, добавляется только фон, если больше подгоняется под размер 350х350.
code_11256.txt
Работает только под delphi.
карма: 3

1
файлы: 1code_11256.txt [5.1KB] [241]
Голосовали:flud
Ответов: 8928
Рейтинг: 823
#12: 2009-01-07 18:50:34 ЛС | профиль | цитата
flud, и маленькие и большие у меня преобразуются как надо. Сейчас выложу в файлообмене *.ехе, попробуйте.
------------ Дoбавленo:

А вот и не выложил, там прокрутки нет добавил здесь.
карма: 19

1
файлы: 1resizecolor.rar [88.4KB] [185]
Голосовали:MAV
Ответов: 1304
Рейтинг: 405
#13: 2009-01-07 19:17:06 ЛС | профиль | цитата
Леонид, ваш вариант схемы мне понравился больше чем мой .
Возник попутный вопрос, если где набор аргументов для "MathParse".
карма: 3

1
Голосовали:flud
Ответов: 8928
Рейтинг: 823
#14: 2009-01-07 19:28:06 ЛС | профиль | цитата
MAV, не пытались нажать F1 или мышкой знак вопроса на панели инструментов HiAsm при выделенном элементе?
карма: 19

0
Ответов: 876
Рейтинг: 101
#15: 2009-01-07 19:29:23 ЛС | профиль | цитата
MAV, Спасибо, именно то что мне и нужно было
карма: 1

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