Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.88/8: Рейтинг темы: голосов - 8, средняя оценка - 4.88
1 / 1 / 1
Регистрация: 27.09.2015
Сообщений: 19
1

Быстрый вывод jpeg на экран

06.10.2015, 20:18. Показов 1525. Ответов 19
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
В продолжении темы "JPEG error" #42 через stream
Очень долго происходит

C++
1
2
3
jpeg->LoadFromStream(as);
 
Image1->Picture->Assign(jpeg);
Может кто посоветует как jpeg побыстрее на экран выводить?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
06.10.2015, 20:18
Ответы с готовыми решениями:

Вывод JPEG в Image по маске
Собственно сабж.

Вывод на печать и степень качества jpeg
Здравствуйте! Делаю просмотрщик изображений, столкнулась с двумя проблемами: 1) Не получается...

Быстрый ввод и вывод
Добрый день. Прошу прощения за нубский вопрос, но все-таки... Хотелось бы узнать у гуру, какие...

Быстрый вывод картинок из БД
такая проблема: Адреса картинок лежат в бд. при показе картинки достается адрес из бд, по нему...

19
10231 / 6609 / 498
Регистрация: 28.12.2010
Сообщений: 21,156
Записей в блоге: 1
06.10.2015, 20:24 2
C++
1
Canvas->Draw(0,0,bitmap)
0
39 / 39 / 11
Регистрация: 05.09.2015
Сообщений: 262
06.10.2015, 20:29 3
Вы его откуда-то скачиваете, потом грузите, оно потом декодируется. Его нельзя вывести раньше чем это всё завершится.
0
1 / 1 / 1
Регистрация: 27.09.2015
Сообщений: 19
06.10.2015, 20:35  [ТС] 4
raxp, Еще медленней получается.

Добавлено через 1 минуту
UI-Maker, в принципе да. Но vlc ту же картинку показывает гораздо быстрее и без нагрузки на процессор, в отличии от того что получилось у меня. Вот я и задаюсь вопросом - как?
0
10231 / 6609 / 498
Регистрация: 28.12.2010
Сообщений: 21,156
Записей в блоге: 1
06.10.2015, 20:38 5
Потому что двойная буферизация и отправка только изменившихся частей картинки.
0
39 / 39 / 11
Регистрация: 05.09.2015
Сообщений: 262
06.10.2015, 20:41 6
а) Каким образом вы определяете "медленность"?
б) А у вас на чём? Не на VCL?
Сравнивать нужно отдельно - сколько скачивалось, сколько грузилось, сколько выводилось.
0
1 / 1 / 1
Регистрация: 27.09.2015
Сообщений: 19
06.10.2015, 20:46  [ТС] 7
Цитата Сообщение от raxp Посмотреть сообщение
отправка только изменившихся частей картинки.
не отправка, а наверное, вывод на экран. Но тогда это еще дольше должно быть. Особенно с динамичными картинками, а нет - все равно быстро.

Добавлено через 2 минуты
UI-Maker,
а) сравнивая работу с этим участком кода и без него (все остальное не тормозит)
б) на VCL
0
39 / 39 / 11
Регистрация: 05.09.2015
Сообщений: 262
06.10.2015, 20:52 8
Откуда картинка-то берётся? Если по сети - то у вас скорее всего сеть медленно передаёт файл. А отображение тут не при чём.
0
1 / 1 / 1
Регистрация: 27.09.2015
Сообщений: 19
06.10.2015, 20:56  [ТС] 9
UI-Maker, да нет в том и дело, что по сети файл берется без проблем. Задержка именно в отображении.
Это потоковое видео с камеры наблюдения.
При этом сеть не грузится вообще. Без вывода на экран 25 картинок в секунду прокачивается без проблем. Только начинаешь выводить - все тормоза. Даже брал локальный файл с диска (Jpeg) - то же самое долго.
vlc на этой же машине и с этого же ресурса отображает без каких либо тормозов и нагрузки на проц.
0
39 / 39 / 11
Регистрация: 05.09.2015
Сообщений: 262
06.10.2015, 21:05 10
Плеер? Может он сперва подгружает кадры, а потом выводит? Хотя да, своими кодеками же раскодирует. А если попробовать на GDI+?
Вы пробовали без Image?:
Delphi
1
2
jpeg->LoadFromStream(as);
Canvas->Draw(0,0,jpeg);
0
1 / 1 / 1
Регистрация: 27.09.2015
Сообщений: 19
06.10.2015, 21:18  [ТС] 11
Цитата Сообщение от UI-Maker Посмотреть сообщение
Вы пробовали без Image?:
Да - еще медленнее, как кажется.
0
Заблокирован
06.10.2015, 21:26 12
да время загрузки изображения пока загрузка не законченна изображение не появится, попробуй загрузить с компьютера картинку)
0
1 / 1 / 1
Регистрация: 27.09.2015
Сообщений: 19
06.10.2015, 21:28  [ТС] 13
andreymisin, выше писал, что пробовал с диска.
0
Заблокирован
07.10.2015, 02:28 14
по вашему я не пробывал работать, использовал библиотеку Opencv для работы с web или ip камерой, и никогда не было проблемм... даже успевается делаться распознование образов в момент между получением кадра и выводом на экран... у вас же в любом случае дело в обработке и получении получаете из потока данные преобразуете в картинку... попробуйте для работы использовать opencv, ну или Image1->Picture->LoadFromFile("1.jpg") так как Ip камера или веб передает mjpeg т.е по сути просто jpeg файлы, там всегда есть ссылка на текущий файл...
0
10231 / 6609 / 498
Регистрация: 28.12.2010
Сообщений: 21,156
Записей в блоге: 1
07.10.2015, 06:41 15
Это потоковое видео с камеры наблюдения.
с этого нужно было начинать. Это делается с помощью DirectShow, VLC API, FFMPEG. А ваши загруки картинок.

или Image1->Picture->LoadFromFile("1.jpg")
для отображения картинки из сети нет смысла ее сохранять на диск.

так как Ip камера или веб передает mjpeg т.е по сути просто jpeg файлы, там всегда есть ссылка на текущий файл...
не путайте поток MJPEG из кадров со ссылкой на готовый кадр. CGI ссылка на готовый файл - это не поток!

что по сети файл берется без проблем. Задержка именно в отображении
чушь. Отображение как раз быстрее всего, а вот если вы сначала сохраняете на диск, а потом отображаете, то вот потеря времени. Но она мизерна по сравнению со временем загрузки из сети. Сами сравните скорость операций ввода-вывода винчестера и размером файла со скоростью LAN или Интернет-канала.
0
1 / 1 / 1
Регистрация: 27.09.2015
Сообщений: 19
07.10.2015, 08:36  [ТС] 16
raxp, я не сохраняю на диск, привел для примера. В первом сообщении написано как я делаю.
Поковырявшись со временем в разных местах пришел к выводу.
Если взять событие Image1Progress (после Image1->Picture->Assign(jpeg)) - то от 0 до 100 процентов вывод картинки на моем i7 - 30 мсек. На ноуте 150 мсек. Вот и задержка - вопрос, почему так медленно.
Цитата Сообщение от raxp Посмотреть сообщение
Это делается с помощью DirectShow, VLC API, FFMPEG.
Можно носом меня ткнуть чуть конкретнее, сейчас столько в голове...
Заранее спасибо.
0
10231 / 6609 / 498
Регистрация: 28.12.2010
Сообщений: 21,156
Записей в блоге: 1
07.10.2015, 09:11 17
https://www.videolan.org/developers/vlc.html
http://www.videolan.org/develo... ygen/html/
например.
0
1 / 1 / 1
Регистрация: 27.09.2015
Сообщений: 19
07.10.2015, 09:15  [ТС] 18
raxp, спасибо, это я уже читаю. Я имел ввиду, может пример работы с этими библиотеками есть. Не силен я в винддовых сях. На линуксе попроще.
0
10231 / 6609 / 498
Регистрация: 28.12.2010
Сообщений: 21,156
Записей в блоге: 1
07.10.2015, 09:19 19
https://www.cyberforum.ru/post5492729.html
0
1 / 1 / 1
Регистрация: 27.09.2015
Сообщений: 19
07.10.2015, 21:15  [ТС] 20
Продолжение мучений здесь
VLC API - не показывает
0
07.10.2015, 21:15
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
07.10.2015, 21:15
Помогаю со студенческими работами здесь

Не могу понять как делать вывод на экран структуры STUDENT на заполнение и вывод данных на экран
Добрый вечер. Вот задание и мой код программы на C++ Не выходит нормально реализовать 3е...

Resize JPEG, BMP, GIF, PNG --> JPEG
Доброго дня! Стала задача сделать ресайзер. Требования: картинка по соотношению вес/качество...

Вывод в DBExpress картинки jpeg, содержащейся в поле таблицы
Уважаемые господа! Прошу помочь- в поле таблицы ms sql содержатся картинки. Как выводить картинки в...

Быстрый вывод данных из потока
Приветствую. Для максимально быстрого вывода данных из потока в окно я создал нижеприведенный...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru