![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
При сохранении файла притормаживает
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тему говорит.