Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: OKTA от Апрель 14, 2014, 10:48



Название: [РЕШЕНО] Image preview
Отправлено: OKTA от Апрель 14, 2014, 10:48
Товарищи, посоветуйте пожалуйста.
Имею картинку вес которой может быть > 100 Mb. Как быстро и не затратно получить ее уменьшенную копию? Через QImage очень затратно, а как происходит в той же винде, когда вместо файлов  в проводнике показываются маленькие превьюшки, я не догоняю  :-\


Название: Re: Image preview
Отправлено: Old от Апрель 14, 2014, 10:52
Товарищи, посоветуйте пожалуйста.
Имею картинку вес которой может быть > 100 Mb. Как быстро и не затратно получить ее уменьшенную копию? Через QImage очень затратно, а как происходит в той же винде, когда вместо файлов  в проводнике показываются маленькие превьюшки, я не догоняю  :-\
По моему венда в фоне готовит превьюшки (загружает весь файл и сохраняет его уменьшенную копию) и показывает в проводнике уже их.


Название: Re: Image preview
Отправлено: vizir.vs от Апрель 14, 2014, 10:56
У меня была схожая задача. Было много объемных рисунков, превью которых надо было показывать. С предварительно запускал программку, которая делала уменьшенные превьюшки и отображала их. Когда я делал это на лету получалось долго и с тормозами.


Название: Re: Image preview
Отправлено: OKTA от Апрель 14, 2014, 10:58
У меня была схожая задача. Было много объемных рисунков, превью которых надо было показывать. С предварительно запускал программку, которая делала уменьшенные превьюшки и отображала их. Когда я делал это на лету получалось долго и с тормозами.

А превьюшки делал с помощью QImage, сохраняя в  наихудшем качестве или каким-то другим способом? У меня предварительно не получится - надо на лету именно.


Название: Re: Image preview
Отправлено: Old от Апрель 14, 2014, 11:00
А превьюшки делал с помощью QImage, сохраняя в  наихудшем качестве или каким-то другим способом?
Можно с помощью QImage. Загрузил, scale, сохранил.


Название: Re: Image preview
Отправлено: OKTA от Апрель 14, 2014, 11:13
Да, так и буду делать, спасибо!
Scaled работает быстрее, нежели если делать через сохранение в байт-эррэй с ухудшением качества и последующей загрузкой из этого же байт-эррэя.


Название: Re: Image preview
Отправлено: Alex Custov от Апрель 14, 2014, 16:52
По моему венда в фоне готовит превьюшки (загружает весь файл и сохраняет его уменьшенную копию) и показывает в проводнике уже их.

Именно, и хранит превьюшки в Thumbs.db.


Название: Re: [РЕШЕНО] Image preview
Отправлено: Kolobok от Апрель 16, 2014, 10:58
Если формат поддерживает скалирование (QImageIOHandler::ScaledSize) то QImageReader будет быстрее, особенно на больших картинках.

Код:
    QImage image;
    QImageReader imageReader(file);

    imageReader.setScaledSize(QSize(...));
    image = imageReader.read();


Название: Re: [РЕШЕНО] Image preview
Отправлено: OKTA от Апрель 16, 2014, 11:19
Странно, может что-то не так делал, но на картинке в 100Мб он медленнее, да и еще после передачи изображения в QImage, оно на столько заскейлилось, что пиксели повылеазали  ;D Хотя без него при том же скейле с QImage все ок  ???


Название: Re: [РЕШЕНО] Image preview
Отправлено: deMax от Апрель 18, 2014, 14:18
Я бы посмотрел на что то такое(погуглил бы):
Python, C and C++ efficiency on JPG thumbnail creation http://www.rkblog.rk.edu.pl/w/p/python-c-and-c-efficiency-jpg-thumbnail-creation (http://www.rkblog.rk.edu.pl/w/p/python-c-and-c-efficiency-jpg-thumbnail-creation)

Если действительно быстро надо, для создания предварительного просмотра можно не загружать всю картинку, а считать только определенные байты.


Название: Re: [РЕШЕНО] Image preview
Отправлено: OKTA от Апрель 18, 2014, 14:42
Какие-то странные там тесты - картинку в 1.3. Mb конвертить за 4 секунды?  ???
Qt через
Код:
QImage img;
    img.load(path);
    img.scaledToHeight(50);
картинку в 100 Mb за пол секунды шлёпает.


Название: Re: [РЕШЕНО] Image preview
Отправлено: Alex Custov от Апрель 18, 2014, 16:16
Какие-то странные там тесты - картинку в 1.3. Mb конвертить за 4 секунды?  ???

подозреваю запуск на микроконтроллере