diff --git a/libs/imageio/src/BasisEncoder.cpp b/libs/imageio/src/BasisEncoder.cpp index b32bbadb7d..0c24e710df 100644 --- a/libs/imageio/src/BasisEncoder.cpp +++ b/libs/imageio/src/BasisEncoder.cpp @@ -94,10 +94,18 @@ Builder& Builder::miplevel(size_t level, size_t layer, const LinearImage& floatI std::unique_ptr data = applyTransferFunction ? fromLinearTosRGB(sourceImage) : fromLinearToGrayscale(sourceImage); basisImage->init(data.get(), floatImage.getWidth(), floatImage.getHeight(), 1); - } else { + } else if (sourceImage.getChannels() == 4) { std::unique_ptr data = applyTransferFunction ? fromLinearTosRGB(sourceImage) : fromLinearToRGB(sourceImage); basisImage->init(data.get(), floatImage.getWidth(), floatImage.getHeight(), 4); + } else if (sourceImage.getChannels() == 3) { + std::unique_ptr data = applyTransferFunction ? + fromLinearTosRGB(sourceImage) : fromLinearToRGB(sourceImage); + basisImage->init(data.get(), floatImage.getWidth(), floatImage.getHeight(), 3); + } else { + assert_invariant(false); + mImpl->error = true; + return *this; } return *this;