QT中打开jpg文件,访问EXIF信息,得到旋转角度的信息。

如题,打开jpg文件的时候,这种文件其实是有EXIF信息的。这里不介绍EXIF信息了,直接介绍如何读到该信息。

QT的这个头文件我暂时只发现怎么读到图片的旋转信息,如果我发现新的,会更新这篇博客。

先看官方的文档

bool ImageViewer::loadFile(const QString &fileName)
{
    QImageReader reader(fileName);
    reader.setAutoTransform(true);
    const QImage newImage = reader.read();
    if (newImage.isNull()) {
        QMessageBox::information(this, QGuiApplication::applicationDisplayName(),
                                 tr("Cannot load %1: %2")
                                 .arg(QDir::toNativeSeparators(fileName), reader.errorString()));
        return false;
    }

介绍是这么写的:In the loadFile() function, we instantiate a QImageReader and enable automatic transformations by calling QImageReader::setAutoTransform(). For files in JPEG format, this ensures that portrait mode images of digital cameras are shown correctly by applying the appropriate orientation read from the EXIF meta data stored in the image file.

意思是:在loadFile()函数中,我们实例化一个QImageReader并通过调用QImageReader :: setAutoTransform()来启用自动转换。

对于JPEG格式的文件,这可以确保通过应用从图像文件中存储的EXIF元数据中读取的适当方向,可以正确显示数码相机的肖像模式图像。


事实上,通过上面的代码,显示出newImage,你就可以发现,图片已经被自动旋转过了。如何读取这个旋转信息呢

 
  
    QStringList fileList = QFileDialog::getOpenFileNames(this, tr("Open file..."),
                "/", " ");
    QString filePath = fileList.at(0);
    QImageReader reader(filePath);
//http://doc.qt.io/qt-5/qimageiohandler.html#Transformation-enum  枚举类型
    QImageIOHandler::Transformations transformation = reader.transformation();

这里弹出个对话框获取文件路径,得到后,你可以用调试模式发现transformation就是你想要的图片旋转信息了。

具体的枚举信息我不贴出来了,我给个网址http://doc.qt.io/qt-5/qimageiohandler.html#Transformation-enum。


以上,你就可以想点子 自动旋转图片了。




你可能感兴趣的:(QT中打开jpg文件,访问EXIF信息,得到旋转角度的信息。)