diff --git a/Changes.md b/Changes.md index e5c1f20e508..d6271ba8220 100644 --- a/Changes.md +++ b/Changes.md @@ -18,6 +18,9 @@ Fixes - Fixed bugs caused by reordering images using `GraphComponent::reorderChildren()`. - InteractiveRender : Fixed context used to evaluate scene globals when renderer is set to "Default" [^1]. - Instancer : Fixed handling of unindexed primvars in RootPerVertex mode [^1]. +- ImageGadget : + - Fixed loading of 2 channel images [^1]. + - Fixed error message to include filename [^1]. API --- diff --git a/src/GafferUI/ImageGadget.cpp b/src/GafferUI/ImageGadget.cpp index 26e8a396ad7..87744baf5d7 100644 --- a/src/GafferUI/ImageGadget.cpp +++ b/src/GafferUI/ImageGadget.cpp @@ -139,7 +139,8 @@ using TextureCache = IECorePreview::LRUCache; IECoreGL::ConstTexturePtr textureGetter( const TextureCacheKey &key, size_t &cost, const IECore::Canceller *canceller ) { const OIIO::ImageSpec config( OIIO::TypeDesc::UCHAR ); - OIIO::ImageBuf imageBuf( resolvedFileName( key.fileName ), /* subimage = */ 0, /* miplevel = */ 0, /* imagecache = */ nullptr, &config ); + const std::string fileName = resolvedFileName( key.fileName ); + OIIO::ImageBuf imageBuf( fileName, /* subimage = */ 0, /* miplevel = */ 0, /* imagecache = */ nullptr, &config ); imageBuf = OIIO::ImageBufAlgo::flip( imageBuf ); if( imageBuf.has_error() ) { @@ -159,6 +160,9 @@ IECoreGL::ConstTexturePtr textureGetter( const TextureCacheKey &key, size_t &cos case 1 : pixelFormat = GL_RED; break; + case 2 : + pixelFormat = GL_LUMINANCE_ALPHA; + break; case 3 : pixelFormat = GL_RGB; break; @@ -166,7 +170,7 @@ IECoreGL::ConstTexturePtr textureGetter( const TextureCacheKey &key, size_t &cos pixelFormat = GL_RGBA; break; default : - throw IECore::Exception( fmt::format( "Unsupported number of channels ({}) in \"{}\"", imageBuf.nchannels(), imageBuf.name() ) ); + throw IECore::Exception( fmt::format( "Unsupported number of channels ({}) in \"{}\"", imageBuf.nchannels(), fileName ) ); } GLuint id;