Страница 1 из 1

QImageReader. Ошибка "unable to read image data"

Добавлено: 2010-09-28 8:05:16
SoeR
Доброго времени суток, уважаемые форумчане.
Столкнулся со следующей траблой - объект класса QImageReader не может взять контент из файлов png. - "unable to read image data".

Часть кода чтения файла:

Код: Выделить всё

QImageReader Reader(FileName);
qDebug() << "Supported formats... = " << QImageReader::supportedImageFormats();
qDebug() << "Image format - " << Reader.format();
qDebug() << "Images count = " << Reader.imageCount();
QImage Image(Reader.read());
qDebug() << "Error = " << Reader.errorString();
int Width = Image.width();
qDebug() << "Width = " << Width;
Вывод в консоли следующий:

Код: Выделить всё

Supported formats... =  ("BW", "EPS", "EPSF", "EPSI", "EXR", "PCX", "PSD", "RGB", "RGBA", "SGI", "TGA", "XCF", "bmp", "bw", "dds", "eps", "epsf", "epsi", "exr", "gif", "ico", "jpeg", "jpg", "pbm", "pcx", "pgm", "png", "ppm", "psd", "rgb", "rgba", "sgi", "svg", "tga", "xbm", "xcf", "xpm", "xv")
Image format -  "png"
Images count =  1
Error =  "Unable to read image data"
Width = 0
Как видно из списка поддерживаемых форматов - формат png присутствует, но данные считать не может ((
Права на файл позволяют его читать - через QFile всё читается на ура, да и с форматом jpeg всё нормально - QImage его парсит.
Картинки PNG пробовал разные - ни одна не прочиталась.

Прогу пишу на машине с FreeBSD 8.0 на борту. Кстати, пробовал вставлять свой код в форточное приложение - рисунки png читаются и отображаются.
Кто сталкивался с подобной проблемой - прошу помочь :)

Re: QImageReader. Ошибка "unable to read image data"

Добавлено: 2010-09-28 11:36:34
Dambo
В вашем случае ошибка заключается не в QImageReader, а в QImage на создание и приёме файлов, QImage является наследником QPaintDevice тут то все и тараканы спрятались))), QPaintDevice базовый класс для рисования всего, чтобы использовать его(вам это не надо) и наследников(вот оно надо) его вам придётся вручную переписать paintEngine() и подпихивать его соответственно.
Геморра вам и счастья, осилите выложите пожалуйста в этой теме исходники и по этапный процесс как переделывали QPaintDevice у него все функции рисования виртуальные соответственно...
Сам подобное не делал, что то похожее видел в книге Земскова(там точно есть пример как переделывать подобные механизмы в qt, не именно про графику), вечером найду в книжке место сюда отпишу.

Re: QImageReader. Ошибка "unable to read image data"

Добавлено: 2010-09-28 11:49:44
SoeR
Поэксперементировав, понял что грабли действительно не в QImageReader... В случае с jpeg-ами QImageReader выдает "Unknown error", а QImage хавает его на ура... А PNG-шки QImage кушать не хочет по какой-то причине.

Re: QImageReader. Ошибка "unable to read image data"

Добавлено: 2010-09-28 21:17:37
Dambo
Прошу прощения за указание в неверную сторону, QImage работает только с 32 битным изображением курсор таковым не является надо использовать другой класс для таких изображений, вообще QImage медленный если верить Масу Шлее он был создал для ситуаций, когда точность обработки изображений превосходит над скоростью.
И в предыдущем посте тоже перепутал авторов...

Re: QImageReader. Ошибка "unable to read image data"

Добавлено: 2011-02-27 10:53:10
SoeR
Разобрался. Решилось удалением qt, установленного из портов, установкой из архива с официального сайта и пересборкой плагинов.