Gdk::Pixbuf не загружает изображения

Я пытаюсь загрузить изображение *.jpg в Gdk::Pixbuf, но он терпит неудачу и постоянно сообщает мне: Ошибка интерпретации файла изображения JPEG (неверная версия библиотеки JPEG: библиотека 62, вызывающий объект ожидает 80)

try{
    Gdk::Pixbuf::create_from_file(".../Test.jpg");
}
    catch(const Glib::FileError& ex) {
    std::cerr << "FileError: " << ex.what() << std::endl;
}
    catch(const Gdk::PixbufError& ex) {
    std::cerr << "PixbufError: " << ex.what() << std::endl;
}

Единственными установленными версиями являются libjpeg8 и libjpeg8-dev.

У меня похожая проблема с загрузкой изображений .png: GdkPixbuf-WARNING *: Bug! Загрузчик gdk-pixbuf 'png' не выдавал ошибку при сбое. PixbufError: не удалось загрузить изображение '.../Test.png': причина неизвестна, возможно, файл изображения поврежден

Версии libpng: 12-dev и 12-0.

Есть идеи, как это исправить?


person VoodooCode    schedule 06.11.2013    source источник
comment
Возможный дубликат: stackoverflow.com/questions/7877330/   -  person const_ref    schedule 06.11.2013
comment
Это Unbuntu (или система на основе Debian)? libjpeg-turbo тоже установлен? Каков результат ls /usr/lib/libjpeg*?   -  person Mark    schedule 07.11.2013
comment
Я использую Ubuntu 13.10 и установлены libjpeg-turbo8 и libjpeg-turbo8-dev. ls /usr/lib/libjpeg* ничего не перечисляет, но ls /usr/lib/x86_64-linux-gnu/libjpeg* делает это и говорит: /usr/lib/x86_64-linux-gnu/libjpeg.a /usr /lib/x86_64-linux-gnu/libjpeg.so /usr/lib/x86_64-linux-gnu/libjpeg.so.8 /usr/lib/x86_64-linux-gnu/libjpeg.so.8.0.2   -  person VoodooCode    schedule 12.11.2013


Ответы (2)


Просто чтобы убедиться, можете ли вы опубликовать результат:

dpkg -l | grep libjpeg

Кроме того, у вас установлена ​​библиотека freeimage?

dpkg -l | grep libfreeimage

Если это так, попробуйте удалить этот пакет и снова попробуйте свой код.

Это помогло?

person Arthur Borsboom    schedule 06.11.2013
comment
dpkg -l | grep libjpeg: ii libjpeg-turbo8:amd64 1.3.0-0ubuntu1 amd64 Библиотека времени выполнения, совместимая с IJG JPEG. ii libjpeg-turbo8:i386 1.3.0-0ubuntu1 Библиотека времени выполнения, совместимая с i386 IJG JPEG. ii libjpeg-turbo8-dev:amd64 1.3.0-0ubuntu1 amd64 Файлы разработки для библиотеки IJG JPEG - person VoodooCode; 12.11.2013
comment
ii libjpeg8:amd64 8c-2ubuntu8 amd64 Библиотека времени выполнения JPEG независимой группы JPEG (пакет зависимостей) ii libjpeg8:i386 8c-2ubuntu8 i386 Библиотека времени выполнения JPEG независимой группы JPEG (пакет зависимости) ii libjpeg8-dev:amd64 8c-2ubuntu8 amd64 Библиотека времени выполнения JPEG независимой группы JPEG библиотека времени выполнения (пакет зависимостей) - person VoodooCode; 12.11.2013
comment
dpkg -l | grep libfreeimage ii libfreeimage-dev 3.15.1-2build1 amd64 Библиотека поддержки форматов графических изображений (файлы разработки) ii libfreeimage3 3.15.1-2build1 amd64 Библиотека поддержки форматов графических изображений (библиотека) Удаление libfreeimage не решило проблему - person VoodooCode; 12.11.2013

Имя файла выглядит странно, там на одну точку больше, чем ожидалось. Используйте "../Test.jpg" вместо ".../Test.jpg".

И убедитесь, что ваш файл действительно является форматом jpeg, а не png, переименованным в jpeg. file ../Test.jpg должен сказать вам это.

person liberforce    schedule 07.11.2013
comment
Filenmae не проблема, я забыл упомянуть, что сократил его для этого вопроса. Изображение было создано с помощью gimp, и я сохранил его как jpeg и как png, оба не могут быть прочитаны из pixbuf. - person VoodooCode; 12.11.2013