Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

При сохранении файла притормаживает


Страницы:   1 2

Japan ©   (2003-12-13 16:03:00) 

Моя программа каждые несколько секунд делает скриншот экрана и сохраняет картинку в отдельный файл, при этом в момент сохранения в файл система немного подтормаживает. Так особо не заметно, но если всё время двигать какое-нибудь окошко или ещё какие действия проводить, то заметить можно. Как можно от этого избавиться, может как нибудь по другому файл сохранять?
У меня так:
jpeg.SaveToFile(путь к файлу);


nikkie   (2003-12-20 21:01:00) [1]

>Умываю руки.
и это правильно. нечего шпиона помогать писать.


Cash   (2003-12-20 19:54:00) [2]

Умываю руки.


Victa   (2003-12-20 18:25:00) [3]

Тормозит именно при конвертировании формата, т.к., ты скорее всего скриншот получаешь как DIB. Можешь попробовать, если тебе качество изображения не критично, до записи уменьшать размер картинки, до 640х480, и даже меньше. Качество, конечно будет ужасным, но разобрать можно. Тормозить практически не будет, если сохранять как БМП. Но размер будет большой. Мы делали 10 экранов в секунду, и писали в avi в формате divx. При 1024х768 система подгружалась очень. А при 320х200 даже на селероне 400 почти незаметно было. В MSDN есть пример как в ави в потоке писать


Japan   (2003-12-20 01:32:00) [4]

Система у меня очень даже ничего: Athlon 2500, DDR 512, HDD Segate 7200 на 80 GB. Так что не в этом дело.
Насчёт чёрно-белой картинки, слишком долго цветную в чёрно-белую преобразовывать, да и размер практически таким же остаётся.
И ещё насчёт системы, если и может быт узкое место, то это если только хард.


Cash   (2003-12-18 18:32:00) [5]

У тебя какая система Japan? Может на более производительном комп-е работать будет как часы? (сам не знаю, что еще посоветовать).


Japan   (2003-12-17 18:54:00) [6]

То есть качество картинки изменять? Пробовал.
Но странно, что это почти не влияет. Если делаю качество jpg 2% и 90% одинаково подтормаживает.
И тут я ещё кое-что определил: строчка jpeg.CompressionQuality:=q;
jpeg.Compress;
тоже вызывает тормоза.
Когда комментирую jpeg.Compress и jpeg.SaveToFile(путь к файлу);
То тормозов нет, а когда хоть одна из этих строчек рабоатет, то тормозит.
Так что применение jpg не ускорит работу, разве что место на диске сэкономит, с такой же скоростью можно и bmp сохранять, только размер файла изменять не получится. Хотя можно сделать рисунок чёрнобелым. Щас попробую, посмотрим, что получится.


Cash   (2003-12-17 12:43:00) [7]

Че сказать в таком случае. Размер файла, Japanты с размером эксперементировал ?.


Cash   (2003-12-17 12:43:00) [8]

Че сказать в таком случае. Размер файла, Japanты с размером эксперементировал ?.


Japan   (2003-12-17 00:42:00) [9]

To Cash:
Когда комментирую эту строчку jpeg.SaveToFile(путь к файлу); то никаких тормозов нет. То есть сам скриншот тормозов не вызывает, а именно сохранение в файл.


Cash   (2003-12-16 22:03:00) [10]

Japan: можно подумать, что тормозы возникают в момент записи, но может во время снимка экрана. Japanты мож не туда глядишь.


Japan   (2003-12-16 00:18:00) [11]

Про потоки почитал, примеры посмотрел.
Там в основном много повторяющихся действий производится, допустим заполнения формы точками (пикселами). Про запись в файл ничего нет. Если допустим сделать так, чтобы не вся картинка в файл писалась, а написать процедуру, которая бы часть сохраняла и выделить в поток и вызывать до тех пор пока вся картинка не запишется, тогда может и получится, а так всё без изменений, притормаживает при записи. Ведь вся картика сразу пишется за раз.


Stilgar   (2003-12-15 22:56:00) [12]

2 Japan (15.12.03 18:50) [14]
Надо в том потоке и фотографировать и сохранять. Про потоки уже читал?


Japan   (2003-12-15 18:50:00) [13]

Тогда у меня возникает вопрос, как организовать поток, если у меня запись в файл производится одной командой
jpeg.SaveToFile(путь к файлу);
По-моему смысла не имеет.


SPeller   (2003-12-15 07:24:00) [14]

Используй класс TThread. Заодно почитай справочку по нему, чтобы понятно было как его использовать.


Japan   (2003-12-15 06:03:00) [15]

>Смотря какой винт. Можно и 500 КБ записать с тормозами. Ты вот >посмотри, есть ли тормоза при сохранении bmp ?

Тормозит, точно также. Только места больше занимает.

>Смотря в каком плане качество. Можешь монохромный битмап сделать >из цветного.

Я имел ввиду, что в jpeg можно качество в процентах выставлять. Файлы меньше, экономится место.

>Тоже хорошая идея.

Только бы ещё объяснили, как её реализовать. Никогда такого не делал.


SPeller   (2003-12-15 03:48:00) [16]


> Так почему же лучше BitMap? По моему тормоза совсем не из-за
> преобразования bmp->jpg, а именно при записи в файл

Смотря какой винт. Можно и 500 КБ записать с тормозами. Ты вот посмотри, есть ли тормоза при сохранении bmp ?


> И ещё вопрос, в bmp ведь по-моему качество картинки нельзя
> указывать?

Смотря в каком плане качество. Можешь монохромный битмап сделать из цветного.


> А если организовать все отдельным потоком?

Тоже хорошая идея.


Japan   (2003-12-14 19:26:00) [17]

To IJCuper:
запись в файл выделить в отдельный поток?
Как это сделать?


Japan   (2003-12-14 19:24:00) [18]

To Cash:
Так почему же лучше BitMap? По моему тормоза совсем не из-за преобразования bmp->jpg, а именно при записи в файл, потому что если преобразовываю но в файл не пишу, то тормозов нет.
Да и тормоза ведь скорее всего зависят от размера сохраняемого файла.
И ещё вопрос, в bmp ведь по-моему качество картинки нельзя указывать?


IJCuper   (2003-12-14 13:02:00) [19]

А если организовать все отдельным потоком?


Cash   (2003-12-14 12:11:00) [20]

Japan (14.12.03 06:18) [5]. Так это шпионка чтоли, тогда действительно пробуй BitMap. SPellerтему говорит.


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо