Текущий архив: 2004.03.09;
Скачать: CL | DM;
Вниз
При сохранении файла притормаживает Найти похожие ветки
← →
Japan (2003-12-13 16:03) [0]Моя программа каждые несколько секунд делает скриншот экрана и сохраняет картинку в отдельный файл, при этом в момент сохранения в файл система немного подтормаживает. Так особо не заметно, но если всё время двигать какое-нибудь окошко или ещё какие действия проводить, то заметить можно. Как можно от этого избавиться, может как нибудь по другому файл сохранять?
У меня так:
jpeg.SaveToFile(путь к файлу);
← →
Михааааааааааааа (2003-12-13 16:11) [1]ПОДРУГОМУ НЕЛЬЗЯ. Сделай окошко м надписью "Загрузка", которая будет появлятся во время сохранения...
← →
SPeller © (2003-12-13 17:14) [2]А если сохранять в BMP?
← →
KosilkA © (2003-12-13 20:10) [3]
> SPeller © (13.12.03 17:14) [2]
бмп каждые несколько секунд? )))
← →
Cash © (2003-12-14 00:17) [4]По моему, а зачем сохранять при непосредственной работе. Japan я точно не знаю алгоритма работы твоей проги, но, я бы сделал примерно так.
положил бы компонент Imagelist (или др.) и сохранял бы внего. Хорош такой компонент в пакете DelphiX, там легко можно добавлять или удалять картинки. Далее при закрытии или завершении НЕПОСРЕДСТВЕННОЙ РАБОТЫ (перетаскивение окошка и т.д.) или по нажатии кнопки появится окошко из коме"нта Михааааааааааааа сигналезирующее: Ща погоди сохраню!
. Или типа того. Размышления на скорую руку, пробуй может меньше тормозить будет, может больше :).
← →
Japan (2003-12-14 06:18) [5]Так для меня не совем приемлимо, надо чтобы пользователь не видел как это всё сохраняется, то есть чтобы он был не в курсе, что скриншоты делаются и сохраняются. Так что если потом всё за один раз сохранять, то это слишком долго и заметно.
← →
SPeller © (2003-12-14 08:34) [6]
> бмп каждые несколько секунд? )))
Да, а что? Я больше чем уверен что притормаживание связано с кодированием bmp (скриншота) в jpeg. А то что битмап получится в несколько метров - это пустяки, у тебя ведь не на 2 гига жёсткий.
← →
Cash © (2003-12-14 12:11) [7]Japan (14.12.03 06:18) [5]. Так это шпионка чтоли, тогда действительно пробуй BitMap. SPeller тему говорит.
← →
IJCuper © (2003-12-14 13:02) [8]А если организовать все отдельным потоком?
← →
Japan (2003-12-14 19:24) [9]To Cash:
Так почему же лучше BitMap? По моему тормоза совсем не из-за преобразования bmp->jpg, а именно при записи в файл, потому что если преобразовываю но в файл не пишу, то тормозов нет.
Да и тормоза ведь скорее всего зависят от размера сохраняемого файла.
И ещё вопрос, в bmp ведь по-моему качество картинки нельзя указывать?
← →
Japan (2003-12-14 19:26) [10]To IJCuper:
запись в файл выделить в отдельный поток?
Как это сделать?
← →
SPeller © (2003-12-15 03:48) [11]
> Так почему же лучше BitMap? По моему тормоза совсем не из-за
> преобразования bmp->jpg, а именно при записи в файл
Смотря какой винт. Можно и 500 КБ записать с тормозами. Ты вот посмотри, есть ли тормоза при сохранении bmp ?
> И ещё вопрос, в bmp ведь по-моему качество картинки нельзя
> указывать?
Смотря в каком плане качество. Можешь монохромный битмап сделать из цветного.
> А если организовать все отдельным потоком?
Тоже хорошая идея.
← →
Japan (2003-12-15 06:03) [12]>Смотря какой винт. Можно и 500 КБ записать с тормозами. Ты вот >посмотри, есть ли тормоза при сохранении bmp ?
Тормозит, точно также. Только места больше занимает.
>Смотря в каком плане качество. Можешь монохромный битмап сделать >из цветного.
Я имел ввиду, что в jpeg можно качество в процентах выставлять. Файлы меньше, экономится место.
>Тоже хорошая идея.
Только бы ещё объяснили, как её реализовать. Никогда такого не делал.
← →
SPeller © (2003-12-15 07:24) [13]Используй класс TThread. Заодно почитай справочку по нему, чтобы понятно было как его использовать.
← →
Japan (2003-12-15 18:50) [14]Тогда у меня возникает вопрос, как организовать поток, если у меня запись в файл производится одной командой
jpeg.SaveToFile(путь к файлу);
По-моему смысла не имеет.
← →
Stilgar © (2003-12-15 22:56) [15]2 Japan (15.12.03 18:50) [14]
Надо в том потоке и фотографировать и сохранять. Про потоки уже читал?
← →
Japan (2003-12-16 00:18) [16]Про потоки почитал, примеры посмотрел.
Там в основном много повторяющихся действий производится, допустим заполнения формы точками (пикселами). Про запись в файл ничего нет. Если допустим сделать так, чтобы не вся картинка в файл писалась, а написать процедуру, которая бы часть сохраняла и выделить в поток и вызывать до тех пор пока вся картинка не запишется, тогда может и получится, а так всё без изменений, притормаживает при записи. Ведь вся картика сразу пишется за раз.
← →
Cash © (2003-12-16 22:03) [17]Japan: можно подумать, что тормозы возникают в момент записи, но может во время снимка экрана. Japan ты мож не туда глядишь.
← →
Japan (2003-12-17 00:42) [18]To Cash:
Когда комментирую эту строчку jpeg.SaveToFile(путь к файлу); то никаких тормозов нет. То есть сам скриншот тормозов не вызывает, а именно сохранение в файл.
← →
Cash © (2003-12-17 12:43) [19]Че сказать в таком случае. Размер файла, Japan ты с размером эксперементировал ?.
← →
Cash © (2003-12-17 12:43) [20]Че сказать в таком случае. Размер файла, Japan ты с размером эксперементировал ?.
← →
Japan (2003-12-17 18:54) [21]То есть качество картинки изменять? Пробовал.
Но странно, что это почти не влияет. Если делаю качество jpg 2% и 90% одинаково подтормаживает.
И тут я ещё кое-что определил: строчка jpeg.CompressionQuality:=q;
jpeg.Compress;
тоже вызывает тормоза.
Когда комментирую jpeg.Compress и jpeg.SaveToFile(путь к файлу);
То тормозов нет, а когда хоть одна из этих строчек рабоатет, то тормозит.
Так что применение jpg не ускорит работу, разве что место на диске сэкономит, с такой же скоростью можно и bmp сохранять, только размер файла изменять не получится. Хотя можно сделать рисунок чёрнобелым. Щас попробую, посмотрим, что получится.
← →
Cash © (2003-12-18 18:32) [22]У тебя какая система Japan? Может на более производительном комп-е работать будет как часы? (сам не знаю, что еще посоветовать).
← →
Japan (2003-12-20 01:32) [23]Система у меня очень даже ничего: Athlon 2500, DDR 512, HDD Segate 7200 на 80 GB. Так что не в этом дело.
Насчёт чёрно-белой картинки, слишком долго цветную в чёрно-белую преобразовывать, да и размер практически таким же остаётся.
И ещё насчёт системы, если и может быт узкое место, то это если только хард.
← →
Victa (2003-12-20 18:25) [24]Тормозит именно при конвертировании формата, т.к., ты скорее всего скриншот получаешь как DIB. Можешь попробовать, если тебе качество изображения не критично, до записи уменьшать размер картинки, до 640х480, и даже меньше. Качество, конечно будет ужасным, но разобрать можно. Тормозить практически не будет, если сохранять как БМП. Но размер будет большой. Мы делали 10 экранов в секунду, и писали в avi в формате divx. При 1024х768 система подгружалась очень. А при 320х200 даже на селероне 400 почти незаметно было. В MSDN есть пример как в ави в потоке писать
← →
Cash © (2003-12-20 19:54) [25]Умываю руки.
← →
nikkie © (2003-12-20 21:01) [26]>Умываю руки.
и это правильно. нечего шпиона помогать писать.
Страницы: 1 вся ветка
Текущий архив: 2004.03.09;
Скачать: CL | DM;
Память: 0.53 MB
Время: 0.019 c