Вверх ↑
Этот топик читают: Гость
Разработчик
Ответов: 26161
Рейтинг: 2127
#16: 2011-11-28 19:06:57 ЛС | профиль | цитата
Tad писал(а):
а между ними никакого соотношения для разных типов ?

От степени компрессии зависит, и очень сильно
------------ Дoбавленo в 19.07:
Леонид писал(а):
а шапку файла нельзя прочитать ? ведь система как-то читает

А я что, против, выкладывайте свой пример, который читает шапку графического файла
карма: 22

0
Гость
Ответов: 17029
Рейтинг: 0
#17: 2011-11-28 20:07:14 правка | ЛС | профиль | цитата


Редактировалось 1 раз(а), последний 2017-03-03 14:25:47
карма: 0

0
Ответов: 1376
Рейтинг: 197
#18: 2011-11-28 20:34:20 ЛС | профиль | цитата
г. Гость., при загрузке чего-либо от куда-либо не может быть и речи о каких-либо потоках, если нет какого-либо события об окончании загрузки [offtop]И вобще не понятно, какого мы тут распинаемся, если ТС даже не соизволил зарегистрироваться?![/offtop]
карма: 1

0
Ответов: 3889
Рейтинг: 362
#19: 2011-11-28 20:37:04 ЛС | профиль | цитата
г. Гость. писал(а):
вопрос по сути был про потоки...

г. Гость. писал(а):
да-да, знаю, все компоненты, идущие после метода onExec выполняются в отдельном потоке

Собственно, Вы уже знаете достаточно.
карма: 1

0
Ответов: 16884
Рейтинг: 1239
#20: 2011-11-28 20:56:22 ЛС | профиль | цитата
nesco писал(а):
А я что, против, выкладывайте свой пример, который читает шапку графического файла

А зачем ?
Есть Img_Loader
У него есть нужные нижние точки.
правда показывают они размер картинки только при повторной загрузке того же файла и если заремать if not sg then exit;
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Разработчик
Ответов: 26161
Рейтинг: 2127
#21: 2011-11-28 21:30:05 ЛС | профиль | цитата
Tad писал(а):
если заремать if not sg then exit;

Вообще-то, sg -- переменная занятости. Если sg=true, то процесс занрузки изображения завершен. А ты Busy задействуешь
карма: 22

0
Ответов: 16884
Рейтинг: 1239
#22: 2011-11-28 21:43:17 ЛС | профиль | цитата
nesco,А если не нужно мне загружать изображение, а только узнать размеры ? Как товарищу выше.
Я вроде пытаюсь считать уже после отработки onLoad.
onLoad выдало , и sg=true. Все довольны, но возврат назад из procedure MyCallback и устанавливаем sg=false
Add(Img_Loader,14137214,231,133)
{
Point(ImageWidth)
Point(ImageHeight)
link(onLoad,8397704:doString,[(274,139)(274,180)(226,180)(226,209)])
}
Add(FormatStr,8397704,238,203)
{
Mask="%1; %2"
link(Str1,14137214:ImageWidth,[])
link(Str2,14137214:ImageHeight,[])
}


карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Разработчик
Ответов: 26161
Рейтинг: 2127
#23: 2011-11-28 22:22:23 ЛС | профиль | цитата
Tad писал(а):
А если не нужно мне загружать изображение, а только узнать размеры ? Как товарищу выше

Да все там нормально работает. CallBack -- асинхронная процедура, надо обязательно дождаться окончания загрузки и перейти в другую очередь событий. Пример я приводил в этом же топике
А для особо нуждающихся я добавил в Img_Loader на SVN получение только размера, без загрузки изображения. Скрорсть обработки должна возрасти на порядки
------------ Дoбавленo в 22.16:
Вот пример



Add(MainForm,2953706,210,84)
{
}
Add(Img_Loader,1346161,308,119)
{
Point(Busy)
Point(doSize)
Point(onSize)
link(onSize,1010417:doSeparateMT,[])
}
Add(Button,976159,210,126)
{
Left=160
Top=115
TabOrder=-1
Caption="Size"
link(onClick,6607378:doExecute,[])
}
Add(Label,1291571,140,77)
{
Left=10
Top=10
Width=32
Height=17
Caption="width:"
}
Add(Edit,14888062,420,126)
{
Left=50
Top=10
Width=130
Cursor=1
Text=""
}
Add(Label,11735913,147,84)
{
Left=200
Top=10
Width=36
Height=17
Caption="height:"
}
Add(Edit,11747908,420,168)
{
Left=245
Top=10
Width=130
Cursor=1
Text=""
}
Add(ODialog,6607378,259,126)
{
Filter="BMP, GIF, JPG, JPEG, WMF, EMF, PNG, XBM, TIFF files (*.bmp;*.gif;*.wmf;*.emf;*.xbm;*.tiff;*.png;*.jpg;*.jpeg)|.bmp;*.gif;*.ico;*.wmf;*.emf;*.xbm;*.tiff;*.png;*.jpg;*.jpeg|All files (*.*)|*.*"
FileName=""
Select=1
link(onExecute,1346161:doSize,[])
}
Add(MT_MultiData,1010417,357,126)
{
link(onData1,14888062:doText,[])
link(onData2,11747908:doText,[(405,139)(405,174)])
}

------------ Дoбавленo в 22.22:
Tad писал(а):
и устанавливаем sg=false

А вот это чушь собачья. Выход из метода doLoad происходит сразу, отдавая управление системе, тк эти операции асинхронны, не зря же мы прописываем адрес функции обратного вызова, этот адрес нужен системе, после того, как она начнет обработку загрузки, что бы знать куда выдать результат. А потому sg=false выставляется до вызова функции CallBack. Тут прикол в том, что большие картинки грузятся в несколько циклов, а управление отдано системе, почему и надо дожидаться окончания загрузки на точке Busy
карма: 22

0
Ответов: 16884
Рейтинг: 1239
#24: 2011-11-29 00:14:38 ЛС | профиль | цитата
code_26012.txt
Выводит из сотни *jpg-файлов имя последнего + размеры предпоследнего
------------ Дoбавленo в 00.14:
nesco писал(а):
Тут прикол в том, что большие картинки грузятся в несколько циклов
и что после каждого цикла срабатывает onLoad ?
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
файлы: 1code_26012.txt [894B] [234]
Разработчик
Ответов: 26161
Рейтинг: 2127
#25: 2011-11-29 01:58:41 ЛС | профиль | цитата
Tad писал(а):
Выводит из сотни *jpg-файлов имя последнего + размеры предпоследнего

У меня все нормально работает. Отлов Busy поставь и попробуй
------------ Дoбавленo в 01.58:
Вот так нормально работает у меня твоя схема



Add(MainForm,1422918,217,196)
{
Height=361
}
Add(Button,15759462,259,196)
{
Left=10
Top=15
link(onClick,1673244:doBrowse,[])
}
Add(Edit,3738849,357,196)
{
Left=75
Top=15
Width=295
Text="Папка с файлами jpg"
link(onChange,8836682:doSearch,[])
}
Add(StringTable,1201995,714,196)
{
Left=10
Top=60
Width=360
Height=250
Columns=#5:1=160|1:2|1:3|
Grid=0
}
Add(Browse,1673244,308,196)
{
link(onBrowse,3738849:doText,[])
}
Add(FileSearch,8836682,413,196)
{
Ext="*.jpg"
link(onSearch,9389083:doEvent1,[])
}
Add(Img_Loader,16320945,560,189)
{
Point(doSize)
Point(onSize)
Point(Busy)
link(onSize,16293480:doAdd,[])
}
Add(MT_String,7896385,658,196)
{
link(onResult,1201995:doAdd,[])
}
Add(Memory,79911,511,196)
{
link(onData,16320945:doSize,[])
}
Add(MT_Add,16293480,609,196)
{
InputMT=1
link(onAdd,7896385:doStr,[])
link(Data,79911:Value,[(615,177)(600,177)(600,238)(517,238)])
}
Add(Repeat,5895942,560,259)
{
Op1=Integer(1)
link(onRepeat,5295562:doProcessMessages,[])
link(Op2,16320945:Busy,[])
}
Add(Application,5295562,623,259)
{
Wait=1
}
Add(Hub,9389083,469,196)
{
link(onEvent1,79911:doValue,[])
link(onEvent2,5895942:doRepeat,[(500,209)(500,265)])
}

В твоей схеме следующая команда на запрос размера может происходит не дочитав предыдущий
карма: 22

0
Ответов: 16884
Рейтинг: 1239
#26: 2011-11-30 10:22:41 ЛС | профиль | цитата
nesco писал(а):
Вот так нормально работает
Вот эти яйца (Repeat) должны быть в компоненте, а не цепляться снаружи.
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Разработчик
Ответов: 26161
Рейтинг: 2127
#27: 2011-11-30 10:35:59 ЛС | профиль | цитата
Tad писал(а):
Вот эти яйца (Repeat) должны быть в компоненте, а не цепляться снаружи.

Никогда его там не было и не будет. Еще раньше мы отказались от применения любого семафора и репита внутри компонента.
карма: 22

0
Ответов: 16884
Рейтинг: 1239
#28: 2011-11-30 10:54:26 ЛС | профиль | цитата
nesco, дело хозяйское. Но когда отрабатывает onLoad, то данные на всех точках должны быть ИМХО.
Вот аналогичное (когда-то понадобилось) для png-файлов.
code_26019.txt
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
файлы: 1code_26019.txt [1.5KB] [216]
Разработчик
Ответов: 26161
Рейтинг: 2127
#29: 2011-11-30 13:18:01 ЛС | профиль | цитата
Tad, попробуй вот этот код, будет ли работать нормально на картинках и размерах

hiimg_loader_101.zip

Вот схемка для чтения больших картинок, вроде считываются все без потерь

code_26021.txt

Если отработает нормально, то добавлю на SVN
------------ Дoбавленo в 13.18:
Проверть надо без репита, напрямую
карма: 22

0
файлы: 2hiimg_loader_101.zip [2.1KB] [164], code_26021.txt [2.5KB] [272]
Гость
Ответов: 17029
Рейтинг: 0
#30: 2011-11-30 13:57:00 правка | ЛС | профиль | цитата


Редактировалось 1 раз(а), последний 2017-03-03 14:25:47
карма: 0

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