QMovie 是否支持 alpha 通道?
Does QMovie support an alpha channel?
我将 QImageReader
换成 QMovie
以轻松循环动画 GIF。但是,QMovie::currentImage()
返回的 QImage
没有 alpha 通道。如果我使用 QImageReader::read()
,它确实有一个 alpha 通道。该文档没有提及两者之间关于 alpha 的任何区别。使用 QMovie 时有什么方法可以保留 alpha 通道吗?
QMovie movie( "ExampleAnimation.gif" );
movie.jumpToFrame( 0 );
const auto movieFrame = movie.currentImage();
DEBUG_LOG() << movieFrame.hasAlphaChannel(); // false
QImageReader reader( "ExampleAnimation.gif" );
reader.jumpToImage( 0 );
const auto readerImage = reader.read();
DEBUG_LOG() << readerImage.hasAlphaChannel(); // true
我弄清楚了这个问题,我想提供一个答案,以防其他人遇到类似情况。
我使用的 GIF 文件有一个 alpha 通道,但它没有任何透明像素。在内部,QMovie
调用 QPixmap::fromImage()
,如果不使用它似乎会删除 alpha 通道。
我将 QImageReader
换成 QMovie
以轻松循环动画 GIF。但是,QMovie::currentImage()
返回的 QImage
没有 alpha 通道。如果我使用 QImageReader::read()
,它确实有一个 alpha 通道。该文档没有提及两者之间关于 alpha 的任何区别。使用 QMovie 时有什么方法可以保留 alpha 通道吗?
QMovie movie( "ExampleAnimation.gif" );
movie.jumpToFrame( 0 );
const auto movieFrame = movie.currentImage();
DEBUG_LOG() << movieFrame.hasAlphaChannel(); // false
QImageReader reader( "ExampleAnimation.gif" );
reader.jumpToImage( 0 );
const auto readerImage = reader.read();
DEBUG_LOG() << readerImage.hasAlphaChannel(); // true
我弄清楚了这个问题,我想提供一个答案,以防其他人遇到类似情况。
我使用的 GIF 文件有一个 alpha 通道,但它没有任何透明像素。在内部,QMovie
调用 QPixmap::fromImage()
,如果不使用它似乎会删除 alpha 通道。