我有一个大图像,我必须用image.save(fichier)
. 我怎么可能显示保存状态的进度条?
这可能是一个微不足道的问题,但我真的不知道如何做到这一点,因为它是一个单行命令......
我有一个大图像,我必须用image.save(fichier)
. 我怎么可能显示保存状态的进度条?
这可能是一个微不足道的问题,但我真的不知道如何做到这一点,因为它是一个单行命令......
您可能无法使用内置的图像保存。您可以估计保存时间(知道图像的大小,猜测 mb/s),并设置一个进度条并使用计时器来更新它。
或者你可以有一个进度条,它只是快速运行到最后并重新启动以显示一些活动,但不显示实际进度。
编辑:如果你真的必须有一个进度,你可以将图像数据“保存”在内存中,然后一次将内存写入磁盘一个块来更新进度。
QImage image;
QByteArray bytes;
QBuffer buffer(&bytes);
buffer.open(QIODevice::WriteOnly);
image.save(&buffer, "PNG"); // writes image into buffer in PNG format
然后将缓冲区写入磁盘
您可以QImage::save()
在另一个线程中运行,而主线程显示进度条,每秒使用 expected_size/current_size 更新其进度值。你可以得到当前大小QFile::size()