-1

我换成了QImageReader轻松QMovie循环动画 GIF。但是,QImage返回的 byQMovie::currentImage()没有 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
4

1 回答 1

0

我发现了这个问题,我想提供一个答案,以防其他人处于类似情况。

我使用的 GIF 文件有一个 Alpha 通道,但它没有任何透明像素。在内部,QMovie调用QPixmap::fromImage(),如果不使用它似乎会删除 alpha 通道。

于 2021-09-27T19:05:36.410 回答