purebasic.info

PureBasic forum
Текущее время: Ср сен 19, 2018 12:21 pm

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 51 ]  На страницу Пред.  1, 2, 3, 4  След.
Автор Сообщение
 Заголовок сообщения: Re: PBViewer (сырой Image Viewer)
СообщениеДобавлено: Пн май 26, 2014 8:15 am 
Не в сети
МОДЕРАТОР
Аватар пользователя

Зарегистрирован: Пн апр 09, 2007 4:53 pm
Сообщений: 11255
Благодарил (а): 4 раз.
Поблагодарили: 429 раз.
newww писал(а):
PokeU(@bmp, $4D42)
Не проще и понятнее будет так?
Код:
1
bmp.u = $4D42


_________________
Компьютер позволяет решать все те проблемы, которые до его изобретения не существовали. :) :)


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: PBViewer (сырой Image Viewer)
СообщениеДобавлено: Пн май 26, 2014 9:39 am 
Не в сети
лентяй ужасный
Аватар пользователя

Зарегистрирован: Вс фев 27, 2011 4:23 pm
Сообщений: 646
Благодарил (а): 4 раз.
Поблагодарили: 5 раз.
Угу, вот так теперь процедура выглядит, без датасекции:
Код:
1
2
3
4
5
6
7
8
9
10
11
12
 
Procedure.s DetectEXT(FileId)
  EXT.u=0
  ReadData(0, @EXT, 2)
  Select EXT
    Case $4D42:ProcedureReturn "BMP"
    Case $FFD8:ProcedureReturn "JPEG"
    Case $4749:ProcedureReturn "GIF"
    Default: ProcedureReturn "Not an image file"
  EndSelect
EndProcedure
 



Петр, а есть ли нормальный метод записи последовательности байт {0xFF, 0x61, 0xFF, 0x62, 0xFF, 0x63, ..., oxFF, 0x7A} в *память,
кроме как mem$="яaяbяc...яz". В библиотеке Memory ничего нормально не нашел.
Ну кроме цикла конечно-


Последний раз редактировалось newww Пн май 26, 2014 2:01 pm, всего редактировалось 1 раз.

Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: PBViewer (сырой Image Viewer)
СообщениеДобавлено: Пн май 26, 2014 9:45 am 
Не в сети
PureBasic Coder
Аватар пользователя

Зарегистрирован: Чт ноя 10, 2011 10:50 am
Сообщений: 4049
Откуда: Ростов-на-Дону
Благодарил (а): 70 раз.
Поблагодарили: 81 раз.
Пункты репутации: 24
По моему, в данной ситуации лучше завести константы для типов изображений, и возвращать числа, а не строки (для дальнейшего использования будет проще). Ну и в ReadData вместо "0" "FileId" впиши, а то работать не будет.

_________________
Пурик - лучший язык программирования


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: PBViewer (сырой Image Viewer)
СообщениеДобавлено: Пн май 26, 2014 9:59 am 
Не в сети
лентяй ужасный
Аватар пользователя

Зарегистрирован: Вс фев 27, 2011 4:23 pm
Сообщений: 646
Благодарил (а): 4 раз.
Поблагодарили: 5 раз.
Угу, но это все мелочи, которые qpAHToMAS сам сможет исправить, тут главное принцып.
Хотя уверен, что есть более лучшие способы, нужно в исходниках других просмотрщиков смотреть.


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: PBViewer (сырой Image Viewer)
СообщениеДобавлено: Ср окт 07, 2015 10:02 pm 
Не в сети
студент

Зарегистрирован: Чт июл 17, 2014 8:23 am
Сообщений: 8
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Пункты репутации: 0
Удалось кому-нибудь написать вивер с нормальным перелистыванием? Или хотя б про общий принцип почитать соображения. Есть ли на pb доступные сорсы декодера хотя бы для jpg? :?:


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: PBViewer (сырой Image Viewer)
СообщениеДобавлено: Ср окт 07, 2015 10:09 pm 
Не в сети
PureBasic Coder
Аватар пользователя

Зарегистрирован: Чт ноя 10, 2011 10:50 am
Сообщений: 4049
Откуда: Ростов-на-Дону
Благодарил (а): 70 раз.
Поблагодарили: 81 раз.
Пункты репутации: 24
1) что значит нормальное перелистывание?
2) на форуме есть примеры GDI+

_________________
Пурик - лучший язык программирования


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: PBViewer (сырой Image Viewer)
СообщениеДобавлено: Ср окт 07, 2015 11:40 pm 
Не в сети
МОДЕРАТОР
Аватар пользователя

Зарегистрирован: Пн апр 09, 2007 4:53 pm
Сообщений: 11255
Благодарил (а): 4 раз.
Поблагодарили: 429 раз.
GOTO 110 писал(а):
Есть ли на pb доступные сорсы декодера хотя бы для jpg?
Это нужно? http://www.purebasic.com/documentation/ ... coder.html

_________________
Компьютер позволяет решать все те проблемы, которые до его изобретения не существовали. :) :)


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: PBViewer (сырой Image Viewer)
СообщениеДобавлено: Чт окт 08, 2015 8:44 am 
Не в сети
студент

Зарегистрирован: Чт июл 17, 2014 8:23 am
Сообщений: 8
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Пункты репутации: 0
Никита Однороб писал(а):
1) что значит нормальное перелистывание?
Описано выше по теме, чтобы можно было перелистнуть не дожидаясь полной отрисовки картинки, чтобы вывод на экран был параллелен декодированию. Иначе вивер будет пригоден только для очень маленьких картинок. Встроенные функции этого не предусматривают. Так же не удается найти в хэлпе в каком формате pb запоминает изображения, и как получить адрес где оно записано.

Какой набор функций лучше использовать для вывода картинки?

Мой образец вивера это старый ACDSee Classic, но ему нужно усовершенствование.


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: PBViewer (сырой Image Viewer)
СообщениеДобавлено: Чт окт 08, 2015 11:24 am 
Не в сети
МОДЕРАТОР

Зарегистрирован: Вт дек 05, 2006 8:46 am
Сообщений: 6382
Благодарил (а): 20 раз.
Поблагодарили: 198 раз.
Пункты репутации: 48
Декодирование jpg по моему опыту происходит практически мгновенно. Все тормаза при чтении большого изображения с носителя. Особенно заметно тормоз при чтении с флешки.

_________________
read-only


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: PBViewer (сырой Image Viewer)
СообщениеДобавлено: Чт окт 08, 2015 12:59 pm 
Не в сети
студент

Зарегистрирован: Чт июл 17, 2014 8:23 am
Сообщений: 8
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Пункты репутации: 0
kvitaliy писал(а):
Декодирование jpg по моему опыту происходит практически мгновенно.
Для jpg размером от тысячи-двух пикселов уже начинаются сильные для листания тормоза, это видно у всех виверов, при повторном пролистывании файлы уже в кэше и читаются с озу. И нагрузка на цпу высока, что сразу слышно по громкому гудению пропеллера и можно промониторить. Но еще зависит от способа сжатия и оптимизации раскодирования. Программа Imagine например умеет листать не раскодируя полностью, но она тормозит отрисовать картинку целиком.


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: PBViewer (сырой Image Viewer)
СообщениеДобавлено: Чт окт 08, 2015 1:41 pm 
Не в сети
МОДЕРАТОР

Зарегистрирован: Вт дек 05, 2006 8:46 am
Сообщений: 6382
Благодарил (а): 20 раз.
Поблагодарили: 198 раз.
Пункты репутации: 48
GOTO 110 писал(а):
kvitaliy писал(а):
Декодирование jpg по моему опыту происходит практически мгновенно.
Для jpg размером от тысячи-двух пикселов уже начинаются сильные для листания тормоза, это видно у всех виверов, при повторном пролистывании файлы уже в кэше и читаются с озу. И нагрузка на цпу высока, что сразу слышно по громкому гудению пропеллера и можно промониторить. Но еще зависит от способа сжатия и оптимизации раскодирования. Программа Imagine например умеет листать не раскодируя полностью, но она тормозит отрисовать картинку целиком.

Ну и как вы то можете повлиять на результат?
Способ напрашивается из ваших рассуждений : загрузите в память сразу несколько изображений заранее, при листании они будут открываться очень быстро, а параллельно, в другом потоке, можно подгружать другие изображения и выгружать те, которые на расстоянии просмотра в 3-5 кадров.
В любом случае вам незачем знать способ кодирования-раскодирования, тут нечего ловить и нечего оптимизировать. Главный тормоз будет всегда скорость считывания с носителя, тем более, что большие изображения всегда на флешке из фотика, а это гораздо медленнее, чем раскодировать картинку в памяти компьютера.

_________________
read-only


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: PBViewer (сырой Image Viewer)
СообщениеДобавлено: Чт окт 08, 2015 3:09 pm 
Не в сети
студент

Зарегистрирован: Чт июл 17, 2014 8:23 am
Сообщений: 8
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Пункты репутации: 0
kvitaliy писал(а):
Ну и как вы то можете повлиять на результат?
Нужно управление процессом чтения-раскодирования и отображения без ожидания окончания этих процессов.
Цитата:
3-5 кадров

Имеет смысл кэшировать предыдущую и последующую картинки. (При наличии возможности листать рэндомно уже их будет четыре, для разных вариантов следующей команды). Более проблему не решат, когда изображений от десятков до тысяч, тем более они могут быть и 5мб, и 25мб, и 100, и полугиговые. К тому же не хотелось бы сильно загружать все ядра цпу и тратить лишнее озу пытаясь решить проблему грубой силой, т.к. во время листания могут выполняться другие требующие вычислительных ресурсов задачи.
Цитата:
нечего оптимизировать

Читал на хабре пост одного чела который написал раскодировщик, там было сказано что получился работяющий, но очень медленный, если без применения специальных оптимизаций. По работе разных виверов это видно, разная скорость и загрузка цпу на одних и тех же файлах, наверняка из-за различий алгоритмов.
Цитата:
большие изображения всегда на флешке из фотика
Давно им почти не пользуюсь, все на винчестерах.


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: PBViewer (сырой Image Viewer)
СообщениеДобавлено: Чт окт 08, 2015 4:55 pm 
Не в сети
МОДЕРАТОР

Зарегистрирован: Вт дек 05, 2006 8:46 am
Сообщений: 6382
Благодарил (а): 20 раз.
Поблагодарили: 198 раз.
Пункты репутации: 48
GOTO 110 писал(а):
Давно им почти не пользуюсь, все на винчестерах.

Ностальгируете бо былому? Или фотоаппарат с винчестером?
В любом случае, я не верю, что вы ( или я ) способны написать раскодировщик jpg, который будет работать существенно быстрее, чем тот, что есть уже в Пурике. Даже если мы выиграем пару микросекунд, как это повлияет визуально на скорость листания, если всё равно всё упрется в скорость считывания с вашего винчестера? Попробуйте работать с SSD жесткиим диском, уверен, что скорость листания вас удовлетворит.

_________________
read-only


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: PBViewer (сырой Image Viewer)
СообщениеДобавлено: Чт окт 08, 2015 5:07 pm 
Не в сети
профессор

Зарегистрирован: Чт сен 22, 2011 6:21 pm
Сообщений: 239
Благодарил (а): 32 раз.
Поблагодарили: 22 раз.
Пункты репутации: 0
Думаю в нормальных просмотрщиках, листание обеспечивается предварительной распаковкой в память, следующего и предыдущего (возможно нескольких) картинок(вероятно в отдельном потоке).
Так сказать кэширование.


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: PBViewer (сырой Image Viewer)
СообщениеДобавлено: Чт окт 08, 2015 5:58 pm 
Не в сети
студент

Зарегистрирован: Чт июл 17, 2014 8:23 am
Сообщений: 8
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Пункты репутации: 0
Kuzmat
Все используют несколько потоков, одни запуская вспомогательные, другие используя одни и те же, но не более 2-4 для декодирования. Это можно изучить в менеджере задач умеющем показывать потоки. Результаты сильно разные. Из имеющихся под рукой сейчас - ACDSee Classic потратил 14 секунд на перелистывания 130 (520 мб) картинок, Honeyview32 не умеющий отображать частично за 45 секунд, при этом он гораздо быстрее других подобных - XnView, FSViewer и irfanview, которые в несколько раз медленнее. Imagine потратил 15 сек., но он отрисовывал меньшую часть чем ACDSee, и у него тормоза в отображении полной картинки. В данных примерах скорость винчестера не важна, так как все картинки попали в кэш после первого просмотра, cpu i7-870 (4 ядра/8 виртуальных). Так же важна отзывчивость интерфейса, негодная у программ пытающихся отобразить картинку целиком.

kvitaliy писал(а):
я не верю
Это не вопрос веры, следует подумать над технологией.


Вернуться наверх
 Профиль  
 
Показать сообщения за:  Сортировать по:  
Начать новую тему Ответить на тему  [ Сообщений: 51 ]  На страницу Пред.  1, 2, 3, 4  След.

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Создано на основе phpBB® Forum Software © phpBB Group (блог о phpBB)
Сборка создана CMSart Studio
Русская поддержка phpBB