美文网首页
Qt之QImageReader

Qt之QImageReader

作者: YBshone | 来源:发表于2017-05-24 20:00 被阅读0次

QImageReader类为从文件或设备读取图像提供了一个独立的接口。

读取图像最常用的方法是通过构造QImage和QPixmap,或通过调用QImage::load()和QPixmap::load()。QImageReader是一个专业读取图像的类,可以有更多的控制,例如,可以通过调用setScaledSize()读取图像成特定的大小,通过调用setClipRect()可以选择一个剪辑矩形,有效地只加载图像的一部分。取决于底层支持的图片格式,这可以节省内存,加快加载图片。

话不多说,直接上图
获取描述信息

// 读取图像
QImageReader reader;
reader.setFileName("AuthorLogo.jpeg");

if (reader.canRead())
{
    // 读取图片
    QImage image = reader.read();

    // 获取描述信息
    QStringList keys = reader.textKeys();
    QString strValue("");
    foreach (QString strKey, keys)
    {
        strValue = reader.text(strKey).toLocal8Bit();
        qDebug() << QString("key : %1  value : %2").arg(strKey).arg(strValue);
    }
}
else
{
    // 获取错误信息
    QImageReader::ImageReaderError error = reader.error();
    QString strError = reader.errorString();
    qDebug() << "Last Error : " << strError;
}

这时,就会从图像AuthorLogo.jpeg读取所有的描述信息:

"key : Author  value : Mr Wang"
"key : Description  value : Qter"

读取的效果动画图如下:
GIF源图:


GIF源图

每一帧:


每一帧图片

源码示例

QImageReader reader;
reader.setFileName(":/Images/loading");
if (reader.supportsAnimation())
{
    // 动画循环的次数
    int nLoopCount = reader.loopCount();
    qDebug() << QString("Loop Count : %1").arg(nLoopCount);

    int nCount = reader.imageCount();
    for (int i = 0; i < nCount; ++i)
    {
        // 跳到顺序号为i的图像
        bool ret = reader.jumpToImage(i);
        if (reader.canRead())
        {
            // 读取图像
            QImage image = reader.read();

            // 保存图像
            image.save(QString("Loading%1.jpeg").arg(i + 1));

            // 下一帧动画等待的毫秒数
            int nDelay = reader.nextImageDelay();
            qDebug() << QString("Number %1 Delay : %2").arg(i + 2).arg(nDelay);
        }
        else
        {
            // 获取错误信息
            QImageReader::ImageReaderError error = reader.error();
            QString strError = reader.errorString();
            qDebug() << "Last Error : " << strError;
        }
    }
}

输出信息如下:

"Loop Count : -1"
"Number 2 Delay : 90"
"Number 3 Delay : 90"
"Number 4 Delay : 90"
"Number 5 Delay : 90"
"Number 6 Delay : 90"
"Number 7 Delay : 90"
"Number 8 Delay : 90"
"Number 9 Delay : 90"
"Number 10 Delay : 90"
"Number 11 Delay : 90"
"Number 12 Delay : 90"
"Number 13 Delay : 90"
"Number 14 Delay : 90"
"Number 15 Delay : 90"
"Number 16 Delay : 90"
"Number 17 Delay : 90"
"Number 18 Delay : 90"
"Number 19 Delay : 90"
"Number 20 Delay : 90"

QImageWriter、QImageReader一个负责写入、一个负责读取,对于图像的处理有很大帮助。0.0

相关文章

  • Qt之QImageReader

    QImageReader类为从文件或设备读取图像提供了一个独立的接口。 读取图像最常用的方法是通过构造QImage...

  • [转]Qt学习之样式表

    Qt学习之样式表

  • Qt设置程序图标

    说明 本文参考QT 设置程序图标、QT5.8.0 vs2013平台更改程序运行icon图标和# Qt之任务栏系统托...

  • Qt QThread类

    参考博客1:QThread详解参考博客2:Qt之线程(QThread)参考博客3:QT 多线程程序设计参考博客4:...

  • Fedora19 如何安装QT

    sudo yum install qt qt-devel qt-x11 qt-doc qt-demos qt-ex...

  • QT 反射机制的简单使用

    Qt反射前期准备 [以下内容来自博客# Qt5之反射机制(内省),转载请注意说明出处] 首先得继承于Q_Objec...

  • Qt Designer使用技巧

    编译Qt Designer 安装Qt时,选择安装源码 用Qt Creator打开C:\Qt\Qt5.5.0\5.5...

  • QCryptographicHash

    参考Qt之QCryptographicHash QCryptographicHash类--提供了生成密码散列的方法...

  • Qt 安装环境

    Qt 安装 1.1 QT下载地址 http://download.qt.io/archive/qt/ 1.1.1 ...

  • QT5.9+MSVC2015+OPENCV4.0.0搭建

    1.资源准备 QT Qt所有版本http://download.qt.io/archive/qt/我下载了QT5....

网友评论

      本文标题:Qt之QImageReader

      本文链接:https://www.haomeiwen.com/subject/tcioxxtx.html