tschoonj/GTK-for-Windows-Runtime-Environment-Installer

gdk-pixbuf: can't load JPEGs

Tontyna opened this issue · 2 comments

Since updating from gtk3-runtime-3.22.26-2017-11-15-ts-win64 to gtk3-runtime-3.22.28-2018-02-20-ts-win64 GdkPixbuf doesn't handle JPEGs anymore.

Loading a JPEG via Python/cairocffi fails with the following error:

cairocffi.pixbuf.ImageLoadingError: Pixbuf error: Unable to load image-loading module: C:\utils\GTK3-RuntimeX64\lib\gdk-pixbuf-2.0\2.10.0\loaders\libpixbufloader-jpeg.dll: 
'C:\utils\GTK3-RuntimeX64\lib\gdk-pixbuf-2.0\2.10.0\loaders\libpixbufloader-jpeg.dll': 
Das angegebene Modul wurde nicht gefunden    

The libpixbufloader-jpeg.dll is at the above-mentiond location. So it's either corrupt or incompatible or something else is missing.

Had a look at ./lib/gdk-pixbuf-2.0/2.10.0/loaders/loaders.cache, everything looked ok.
Had another look at loaders.cache from gtk3-runtime-3.22.26, where JPEGs work just fine. Wondered why because there's no entry neither for JPEGs nor for PNGs....
Removed the entry for JPEG.
The error when loading a JPEG turned into:

Failed to load image at "file:///C:/www/examples/DSCI2481.JPG" 
(Pixbuf error: Unrecognized image file format

Run gdk-pixbuf-query-loaders.exe, located in the bin dir, to rebuild the loaders.cache file. Got message boxes telling me that libjpeg-8.dll and libjasper-4.dll are missing.
Indeed, there is neither a libjpeg-8.dll nor a libjasper-4.dll in the GTK3-Runtime bin path. And not in my %PATH%, too.

Was lucky and found a libjpeg-8.dll somewhere else on my hard drive and copied it into the bin folder.
Re-run gdk-pixbuf-query-loaders.exe and got the entries for JPEG and TIFF back.

JPEG-Problem solved.

Suggestion: Please include

  • libjpeg-8.dll
  • libjapser-4.dll

in the next release.

I really wonder why in the previous release gdk-pixbuf-2.36.11 (same version number!) handled JPEGs without grumbles and without libjpeg...


Last but not least: Thank you very much for the GTK-for-Windows-Runtime-Environment. Unzip, set PATH, use it. Great.

Many thanks for reporting this issue. It appears to be related to this commit. Looks like gdi is now used only when there is no corresponding loader for those formats available.

I will make a new release this week with the required dlls.

Wow, that was incredibly fast -- thanks!