![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Загрузка изображений из паралельного потока. [D7]
Mirror © (2004-12-07 20:28:00)Доброго времени суток!
Люди, кто работал с компонентом ImageEn, подскажите, пожалуйсто, несколько вещей. Как загружать в него картинки с помощью не основного потока не вызывая Synchronize? Смысл в том, что файлы, которые нужно грузить, давольно большие и я хочу сгрузить эту операцию на другой поток (Thread), чтобы приложение не "висло" в момент загрузки файла.(Если кто знает другой метод решения этой проблемы - пишите). И второй вопрос: как с помощью ImageEn читать EXIF информацию?
З.Ы. Модераторы! Если я опять написал не в ту конференцию (по вашему мнению) можно не удалять ветку, а переместить её туда, где, по вашему мнению, она должна быть, а?
programania (2004-12-14 20:45:00) [1]>А где можно его вхять этот ImageEn
http://www.hyrix.com
или на CD-сборнике компонент бывает
старая версия 1.9, но с исходниками.
murtix (2004-12-14 07:05:00) [2]А где можно его вхять этот ImageEn
programania (2004-12-08 20:16:00) [3]>чтобы приложение не "висло" в момент загрузки файла
Возможно не "висло" это чтоб оно действовало
от клавишей и мыши?
Возможно действия это скорее всего загрузка другого файла?
Тогда текущую загрузку нужно прервать
и значит поток не имеет смысла, потому что не нужна
одновременная работа.
Загрузку можно прервать при чтении файла, если
читать по кусочкам в memoryStream:
stoi:=false;
assignFile(f,imk);
reset(f,1);
r:=fileSize(f);
ms.size:=r;
n:=0;
repeat
if r>500000 then q:=500000 else q:=r;
blockRead(f,ptr(integer(ms.Memory)+n)^,q);
inc(n,q);
dec(r,500000);
application.processMessages;
until (r<=0)or stoi;
ms.Seek(0,soFromBeginning);
closeFile(f);
if not stoi then form1.ImageEnIO1.LoadFromStream(ms);
в FormKeyDown FormMouseDown добавить stoi:=true;
Загрузку можно прервать при декодировании jpeg
для этого в JpegFilt.pas версии 1.9.7b добавить
в uses ...,forms;
в procedure ReadJPegStream
в while (cinfo.output_scanline<cinfo.output_height)
and not stoido begin
application.processMessages;
об Exif
в версии imageEn 2.0.3
ImageEnIO1:=TImageEnIO.create(form1);
ImageEnIO1.ParamsFromFile('I0001.jpg');
label1.caption:=ImageEnIO1.Params.EXIF_Model+' '+
ImageEnIO1.Params.EXIF_DateTime;
и т.п. еше около 50 параметров
к сожалению у меня нет исходников этой версии
если что об них известно сообщите пожалуста.
Digitman (2004-12-08 18:26:00) [4]
> Mirror
не знаю, что такое ImageEn, но, скорей всего, ты промахнулся темой конференции. В "Основная" место вопросу.