|
610 / 392 / 198
Регистрация: 31.03.2013
Сообщений: 2,714
|
|
Максимально быстрая загрузка изображения в Image12.01.2023, 20:42. Показов 4752. Ответов 70
Метки нет (Все метки)
Есть обычный Image контрол, есть фото отснятое в 187 Мп формата .jpg, весом в 91 Мб, если открывать в Win 10 в стандартном просмоторщике он его открывает чуть ли не моментально, но видно, что отображает изначально что-то похожее на превью в худшем качестве и когда начинает зумить это фото, то видно что при приближении качество улучшается (т.е. грузит уже оригинал вместо превью, как мне кажется), у меня данное фото открывается за 6 сек, примерно столько же затрачивается на открытие на Mac и т.д., irfan view и ей схожие проги открывают примерно за сек 2-3, что тоже неплохо, так вот вопрос, как можно открыть фото также быстро, в чем хитрость?
Добавлено через 6 минут Файл для понимания прилагаю ссылкой: Тык
0
|
|
| 12.01.2023, 20:42 | |
|
Ответы с готовыми решениями:
70
Загрузка изображения в Image с памяти устройства Загрузка изображения из ресурсов в Image WPF Загрузка изображения в Image с сохранении соотношения сторон изображения |
|
1596 / 601 / 185
Регистрация: 05.12.2015
Сообщений: 970
|
|
| 25.01.2023, 11:04 | |
|
Midian,
Полная загрузка и отображение 1.438 сек. При уменьшении до 500 px - 0.8 с. По ходу решил неожиданную проблему. В момент передачи в Image оригинала вылетело исключение: System.Runtime.InteropServices.COMExcept ion: 'UCEERR_RENDERTHREADFAILURE Посмотрел здесь - https://learn.microsoft.com/ru... d-failures В коде установил: RenderOptions.ProcessRenderMode = System.Windows.Interop.RenderMode.Softwa reOnly; И это работает, наверное у меня проблема с видеокартой (Intel) На будущее - если огромные рисунки загружать в Image, то на всякий случай писать эту опцию - неизвестно какая карта у пользователя.
1
|
|
|
Модератор
|
||
| 25.01.2023, 11:24 | ||
|
Наверное, лучше отлавливались это исключение. Если оно есть, то значит видеокарта не справляется с обработкой и только тогда переключаться на обработку в ЦП.
0
|
||
|
1596 / 601 / 185
Регистрация: 05.12.2015
Сообщений: 970
|
||
| 25.01.2023, 11:45 | ||
|
Ловятся только исключения в управляемом коде. Это исключение - InteropServices.COMException, то есть в неуправляемом коде. У меня проблема со встройкой Intel где видеопамять динамическая и выделяется под разрешение монитора и не ожидает выделения в видеобуфере кадра 16000 х 11000 Если видеопамять статическая тогда нет проблем.
0
|
||
|
610 / 392 / 198
Регистрация: 31.03.2013
Сообщений: 2,714
|
|
| 25.01.2023, 11:57 [ТС] | |
|
proa33, можно вообще код ваш увидеть, а лучше проект?
0
|
|
|
1596 / 601 / 185
Регистрация: 05.12.2015
Сообщений: 970
|
||||||
| 25.01.2023, 16:28 | ||||||
|
Добавить ссылку System.Drawing
Через Nuget добавить пакет PhotoSauce.MagicScaler
2
|
||||||
|
610 / 392 / 198
Регистрация: 31.03.2013
Сообщений: 2,714
|
|
| 25.01.2023, 20:02 [ТС] | |
|
proa33, в общем внедрил ваш код, загрузил картинку еще большего разрешения в 400 мп, стандартно грузит у меня за 15 сек, а в вашем случае грузи т оригинал за 8 сек, неплохо, спасибо, буду пробовать внедрить это в свой проект
0
|
|
|
610 / 392 / 198
Регистрация: 31.03.2013
Сообщений: 2,714
|
||
| 25.01.2023, 22:47 [ТС] | ||
|
Тесты делал на вот этой картинке https://dropmefiles.com/Iyv6l 400 Мп она
0
|
||
|
1596 / 601 / 185
Регистрация: 05.12.2015
Сообщений: 970
|
|
| 25.01.2023, 23:01 | |
|
Midian, У меня на встройке без этого флага вообще вылетает.
Наверное драйвера шалят.
0
|
|
|
610 / 392 / 198
Регистрация: 31.03.2013
Сообщений: 2,714
|
|
| 25.01.2023, 23:03 [ТС] | |
|
proa33, попробуйте картинку у себя в 400 мп загрузить, сколько у вас будет грузиться интересно
0
|
|
|
1596 / 601 / 185
Регистрация: 05.12.2015
Сообщений: 970
|
|
| 25.01.2023, 23:46 | |
|
Midian, Картинку не вывело, потому что WriteableBitmap выбросил OutOfMemoryException - слишком большой размер.
Замер до этого фрагмента, а это 98% всей нагрузки показал 6.438 сек
0
|
|
|
610 / 392 / 198
Регистрация: 31.03.2013
Сообщений: 2,714
|
||
| 26.01.2023, 08:13 [ТС] | ||
|
0
|
||
|
1596 / 601 / 185
Регистрация: 05.12.2015
Сообщений: 970
|
|
| 26.01.2023, 14:20 | |
|
Midian, Да, так работает.
Время загрузки - 6.0 сек Время отрисовки в Image - 0.6 сек Полное время 6.6
0
|
|
|
Модератор
|
||
| 26.01.2023, 14:45 | ||
|
Если будет время - на выходных сам попробую. С таким временем отрисовки, конечно, самое оптимально это загрузка сначала низкого качества и фоновая загрузка полного качества.
0
|
||
|
610 / 392 / 198
Регистрация: 31.03.2013
Сообщений: 2,714
|
||||||
| 26.01.2023, 15:00 [ТС] | ||||||
|
proa33, такой еще вопрос, данный метод у меня долго отрабатывает:
0
|
||||||
|
610 / 392 / 198
Регистрация: 31.03.2013
Сообщений: 2,714
|
|
| 26.01.2023, 15:04 [ТС] | |
|
Картинку в 187 Мп копирует почти 6 сек, я не могу понять почему так происходит, в пустом проекте копирует за 2,5 сек
0
|
|
|
610 / 392 / 198
Регистрация: 31.03.2013
Сообщений: 2,714
|
|
| 26.01.2023, 15:09 [ТС] | |
|
Вот пустой проект, та же картинка, процесс выполняется и там и там в отдельном потоке:
0
|
|
|
1596 / 601 / 185
Регистрация: 05.12.2015
Сообщений: 970
|
||||||
| 26.01.2023, 15:24 | ||||||
|
Элд Хасп,
весь код загрузки. UpdateLayout отработает уже ПОСЛЕ отображения - это видно по инфе в image.Source, да и визуально это видно. Сколько раз запускал получается: core - 6.0 sec full - 6.6 sec Может мерять надо по другому алгоритму?
Забыл убрать sw.stop() с прошлого раза Результаты такие core - 6.584 full - 6.641 Даже меньше на Image 0.06 сек
0
|
||||||
|
Модератор
|
||
| 26.01.2023, 15:34 | ||
|
Он срабатывает при любом изменении макета. Например, после загрузки может сработать на изменение размера картинки, так как это меняет макет. Но может не сработать на отрисовку картинки, поскольку это не меняет макет. Добавлено через 6 минут Тут ещё такой нюанс, проход визуального дерева происходит дважды. На первом определяются размеры всех элементов и строится макет. Сами элементы не рендерятся. На втором проходит происходит рендеринг элементов по уже определённым размерам. Если при рендеринге изменяется размер элемента, то нужно делать недействительным макет, чтобы опять вернуться к первому шагу. Я с этим столкнулся когда делал: Присоединённые свойства (Attached Property) для всплывающей привязки из шаблонов данных к Canvas и Grid. Оказалось изменять Grid.Row/Column нужно вне прохода измерения (1 шага). Иначе изменения будут учитываться только при следующем рендеринге. Там я это решил через асинхронное изменение в Диспетчере.
0
|
||
|
1596 / 601 / 185
Регистрация: 05.12.2015
Сообщений: 970
|
||
| 26.01.2023, 15:51 | ||
|
Поставим точку останова на image.LayoutUpdated += imageUpdated; В этой точке Image получил Source но еще отобразил. Жмем F5 - продолжить и видим МГНОВЕННОЕ отображение рисунка. Задержка визуально - 0. Добавлено через 6 минут Midian, Это первый рисунок в 93 мв? Для него этот участок кода у меня выполняется 1.0 сек
0
|
||
| 26.01.2023, 15:51 | |
|
Загрузка изображения в Image Загрузка изображения в Image
Загрузка изображения в image (idHTTP) Очистка image и загрузка png изображения Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Запустил конкурс "тем и промптов для текстовых квестов созданных почти чисто ИИ"
Adler 06.10.2026
Всем привет!
За последние три-четыре дня я создал более 16 текстовых квестовых игр используя преимущественно по одному запросу к ИИ на игру. Мне так понравилось смотреть все ветки/ сцены во всех. . .
|
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык.
Возвращает он вот это:
https:/ / i. **********/ vqBWLe2. png
Нужную строчку в 3й колонке просто выдумал. .
Это. . .
|
Новая последняя моя музыка в SUNO
zorxor 05.10.2026
Здравствуйте, дорогие мои друзья! С большой радостью я хотел бы представить вам свою новую последнею музыку, которую сгенерировала мне по моей просьбе нейросеть SUNO. С уважением, zorxor.
Это. . .
|
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js.
В помощники взял Яндекс-Алису.
Было создано три зала на разные интересы.
исторические и ретро
сериал Хичкок. . .
|
|
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
|
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#.
Название изменил на ColorStep.
Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
|
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами:
- ВидТО (СправочникСсылка. ВидыТО);
- ВидГСМ. . .
|
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала.
Ниже прикреплён. . .
|