LINUX.ORG.RU

[GTK][PyGTK] Как определить, что формат изображения поддерживается GdkPixbuf

 ,


0

1

Приветствую.

Нужно из списка файлов вычленить все те, которые поддерживаются GdkPixbuf. Сейчас для этого используется функция gtk.gdk.get_file_info() (в сишной библиотеке это gdk_pixbuf_get_file_info()). Все работает неплохо, но построение списка (GtkListStore) из ~700 файлов занимает порядка 3-4 секунд и это еще без загрузки thumbnail'ов, в общем долго. Как я понял это связано с тем, что gtk.gdk.get_file_info() читает кусок каждого файла, что в принципе неплохо, так как при этом получается куча полезной информации вроде размеров картинки, но первоначальное построение списка хотелось бы ускорить.

Поэтому второй мыслью было получить список расширений поддерживаемых типов файлов, из функции gtk.gdk.pixbuf_get_formats() (gdk_pixbuf_get_formats()), и уже по ним отсеивать файлы. Казалось бы хорошо, но эта функция, как я понял, возвращает только информацию о форматах, поддержка которых вкомпилена в GTK. Кроме них же, еще есть возможность использования внешних загрузчиков. Например такие загрузчики предоставляет libopenraw и libwmf.

В общем как еще можно выполнить задачу поставленную в SUBJ?

★★★★★

Последнее исправление: fat_angel (всего исправлений: 1)

Хе-хе!

Оказывается тормоза были не из-за gtk.gdk.get_file_info(), а из-за обновления виджета (в моем случае gtk.IconView) во время добавления строк в модель. Сейчас переписал метод в соответствии с этими рекомендациями и тот же список из ~700 файлов стал создаваться за ~400 мс, что на мой взгляд уже вполне допустимо для такого числа файлов.

fat_angel ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.