Например, скачивается с интернета картинка и она может быть большого размера в смысле в занимаемой памяти, много мегабайт, нужно сделать эскиз картинки скачанной с интернета, например уменьшить её с соблюдением размера сторон, чтобы на эскизе она смотрелась красиво, но уменьшенная копия занимала гораздо меньше памяти. Как это сделать без долгих расчетов? Или формула какая нужна, там нужно две стороны считать от исходной для уменьшения. Например большая сторона в ширину не может быть больше 236 точек. Вот компонент "image" хорошо уменьшает картинку, но не занимаемую память, а если этих картинок, уменьшенных, нужно больше ста и оригиналы не нужны, а просто помотреть эскизы, а так памяти жрет много. У меня было, 100 картинок, а потребляет памяти программы до 1 гига, а нужно просто посмотреть эскизы и выбрать картинки которые нужны и скачать заново которые подходят.
Вот если кто усовершенствует компонент "Resize", например, добавить возможность уменьшать картинку с соблюдением исходных пропорций и возможность выбора: уменьшить и удалить исходное изображение с памяти, или уменьшить и оставить оригинал в переменной, но наверное работы много, а я пока "владею делфи" - только на уровне новичка, могу из примера сделать себе разное.
Редактировалось 5 раз(а), последний 2017-01-24 02:14:09
Этот топик читают: Гость
Ответов: 537
Рейтинг: 14
|
|||
карма: 4 |
|
Google
vip
|
#1.1контекстная реклама от партнеров
|
Ответов: 198
Рейтинг: 2
|
|||
Sersey писал(а): Вот если кто усовершенствует компонент "Resize"...Зачем его усовершенствовать? Там и так все есть. Как-то так, если наглядно:
После загрузки всех картинок - удаляешь все не нужное. |
|||
карма: 0 |
|
Ответов: 537
Рейтинг: 14
|
|||
Та не. Загружается из интернета любое расширение картинки и сохраняется на жесткий диск, тоесть неизвестно какая картинка будет, с каким расширением .jpg, .png, gif, .jpeg. Картинки какие есть находятся в интернете по примерному названию с пока неизвестным расширенем и сохраняется одна картинка, потом добавляеся на форму с диска с помощью универсального компонента "img_loader", тоесть картина загружена в поток, а дальше её можно отобразить например, на форме в любом формате, взять из потока, в компоненте "image" он примет картинку и покажет, но если картина весит 25мб, то он покажет хоть и уменьшинную картинку, как выставил в настройках, все равно эти 25мб будут висеть в памяти, хотя мне нужна только маленькая, легкая картинка, которая только покажет, что там было на изображении.
Здесь не нужно соблюсти точный формат входящей картинки, нужно просто её уменьшить, например с 25мб, до 100кб и показать на форме. Редактировалось 2 раз(а), последний 2017-01-24 05:38:14 |
|||
карма: 4 |
|
Ответов: 198
Рейтинг: 2
|
|||
Честно говоря не понятно.
Загружаете картинку, меняете ее размер компонентом "Resize" (ширина и высота картинки берутся в этом случае из "img_loader", вычисляются точно так же), отображаете на форме и удаляете исходную картинку. После уменьшения разрешения картинки, она будет явно меньшего размера. Или я что-то не так понимаю? --- Добавлено в 2017-01-24 06:14:40
Дальше просто загружаете и уменьшаете следующую картинку Редактировалось 2 раз(а), последний 2017-01-24 06:17:48 |
|||
карма: 0 |
|
Ответов: 497
Рейтинг: 16
|
|||
верно.
тест Make(delphi)
ver(4.04 build 185) Add(MainForm,2953706,210,112) { Point(doPicture) } Add(Jpeg,12895050,658,203) { Quality=100 Point(doLoadFromStream) Point(doLoadFromBitmap) Point(FileName) Point(Quality) link(FileName,15153590:Var2,[]) } Add(Math,1506914,364,147) { OpType=3 Op2=10 ResultType=0 link(Op1,8383226:ImageHeight,[]) link(Op2,3359719:Var1,[(377,128)]) } Add(Math,5630080,371,196) { OpType=3 Op2=10 ResultType=0 link(Op1,8383226:ImageWidth,[]) link(Op2,3359719:Var2,[(384,164)(510,164)]) } Add(Hub,14722539,413,77) { InCount=2 OutCount=3 link(onEvent1,1506914:doOperation,[(439,83)(439,118)(352,118)(352,153)]) link(onEvent2,5630080:doOperation,[(439,90)(439,146)(359,146)(359,202)]) link(onEvent3,14450467:doResize,[(462,97)(462,223)]) } Add(Resize,14450467,497,217) { Width=32 Height=32 HalfTone=1 link(onResult,5973360:doEvent1,[]) link(Bitmap,8383226:Bitmap,[(503,159)(363,159)]) link(Width,5630080:Result,[(510,205)(444,205)(444,240)(377,240)]) link(Height,1506914:Result,[(517,198)(370,198)]) } Add(Hub,5973360,602,217) { OutCount=4 link(onEvent1,12895050:doLoadFromStream,[]) link(onEvent2,12895050:doLoadFromBitmap,[]) link(onEvent3,12895050:doSave,[(637,237)(637,216)]) link(onEvent4,8108615:doEvent1,[(644,244)(644,265)]) } Add(ODialog,13005962,252,21) { link(onExecute,4414962:doValue,[]) } Add(Memory,4414962,315,21) { link(onData,3363437:doEvent1,[]) } Add(Hub,3363437,371,21) { link(onEvent1,5235734:doPart,[]) link(onEvent2,8383226:doLoad,[(397,34)(397,55)(345,55)(345,76)]) } Add(FilePartElm,5235734,490,21) { Mode=2 link(onPart,3776910:doStrCat,[]) } Add(StrCat,3776910,546,21) { Str2=".tmp" } Add(Button,10346984,175,21) { Left=5 Top=10 link(onClick,13005962:doExecute,[]) } Add(Image,5638052,784,259) { Left=10 Top=40 Width=365 Height=210 } Add(Img_Loader,8383226,357,70) { Point(ImageHeight) Point(ImageWidth) Point(doSize) Point(onSize) link(onLoad,8383226:doSize,[(401,76)(401,80)(345,80)(345,83)]) link(FileName,4414962:Value,[(363,62)(321,62)]) link(onSize,14722539:doEvent1,[]) } Add(Jpeg,2992045,707,259) { Point(FileName) Point(doBitmap) link(onBitmap,5638052:doLoad,[]) link(FileName,15153590:Var3,[(713,166)]) } Add(GetDataEx,15153590,658,161) { link(Data,3776910:Result,[(664,142)(552,142)]) } Add(TrackBarRush,9631451,525,77) { Left=70 Top=5 Width=310 Max=100 Min=1 Position=10 ThumbLength=16 link(onPosition,14722539:doEvent2,[(569,83)(569,87)(401,87)(401,90)]) } Add(Hub,8108615,672,259) { link(onEvent1,2992045:doLoad,[]) link(onEvent2,2992045:doBitmap,[(696,272)(696,279)]) } Add(GetDataEx,3359719,504,123) { Angle=1 link(Data,9631451osition,[(531,128)]) } |
|||
карма: 1 |
|
Ответов: 537
Рейтинг: 14
|
|||
А зачем 2 раза сохранять файл, а потом, ещё, его 2 раза конвертировать? Бедный комп.
СЛАВА ЖЕЛЕЗУ |
|||
карма: 4 |
|
Ответов: 18
Рейтинг: 0
|
|||
http://forum.hiasm.com/getfile/38014
|
|||
карма: 1 |
|
Ответов: 16884
Рейтинг: 1239
|
|||
Да...
|
|||
карма: 25 |
|
Разработчик
Ответов: 26066
Рейтинг: 2120
|
|||
Можно использовать новый штатный компонент Img_GDIFileProcessor. Он позволяет из картинок вытаскивать их эскизы.
Схема
|
|||
карма: 22 |
| ||
Голосовали: | Sersey |
9