• 大小: 12MB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2023-07-22
  • 语言: 其他
  • 标签: QT  TIFF  

资源简介

1.该程序用QT开发,实现图片导入、显示、缩放、拖动及处理(冷暖色、灰度、亮度、饱和、模糊、锐化)。 经实测,我写的这个软件在导入10000*7096像素的超大图片的时候,缩放的速度比2345看图软件还快,2345缩放超大图会卡顿,但本软件不会^_^ 关于程序中缩放拖动部分的说面参见我的博客https://blog.csdn.net/weixin_43935474/article/details/89327314; 2.载入图片后,鼠标移动的时候可以显示鼠所在点的图像的坐标以及灰度; 3.缩放的时候,图片右上角可以显示当前图片的缩放比例; 4.用户可导入16位深的tiff灰度图文件(一般来说是由相机拍摄的灰度图数据),导入16位深的tiff的时候,用户需要先点击界面左上角的checkbox,然后再导入tiff图片,否则图片解析不出来。 注:Qt自带的QImage只能导入8位深的tiff灰度图,如果用qt的QImage导入16位深的灰度图,图像数据会被强制转换成argb格式的图像,数据就被更改了,所以我自己编写一个解析tiff文件的功能,我翻阅了很多博客,其中如下链接给我的帮助最大: https://blog.csdn.net/chenlu5201314/article/details/56276903 上述博客作为详细解析tiff文件结构的说明文档,写的非常详细,我也是根据上面的内容,自己编写了一个解析tiff文件的类(当然功能很少,只能解析符合特定条件的tiff文件) //************************************************************ //by Bruce Xu //注:解析tiff的类只解析特定的tiff文件! //1.解析的tiff文件中只存在一幅图,如果文件中存在多幅图,本类不支持解析! //2.图像数据为8位或16位深度的灰度图,如果是其他类型的图片,本类不支持解析! //3.图片没有被压缩过! //************************************************************

资源截图

代码片段和文件信息

#include “configfilemanager.h“

ConfigFileManager::ConfigFileManager()
{

}
bool ConfigFileManager::ParseConfigFile()//读取test.config文件并获取根节点
{
    QString sConfigFilePath;
#if defined(Q_OS_LINUX)
    sConfigFilePath = qApp->applicationDirPath() + “/../EditPic/test.config“ ;//in linux
#else
    sConfigFilePath = qApp->applicationDirPath() + “/../../EditPic/test.config“ ;//in windows,我的工程名为EditPic
#endif
    QFile file(sConfigFilePath);
    if (!file.open(QFile::ReadOnly))
    {
        return false;
    }
    QString errorStr;
    int errorLine;
    int errorColumn;
    QDomDocument qDomConfigFile;
    if (!qDomConfigFile.setContent(&file false &errorStr &errorLine&errorColumn))
    {
        return false;
    }
    QDomElement root = qDomConfigFile.documentElement();
    QDomNode child = root.firstChild();
    if (!child.isNull())
    {
        if(child.toElement().tagName() == “ROOT“)
        {
            ParseROOT(&child);
        }
    }
    file.close();
    return true;
}

bool ConfigFileManager::SaveConfigFile()
{
    qSetGlobalQHashSeed(100);//为了使 通过QDomElement保存节点属性时, 每次保存的属性的顺序固定,与qSetGlobalQHashSeed(-1);搭配着用
    //projectDoc.createProcessingInstruction(“xml““version = “1.0“encoding = “ UTF-8““);
    QDomElement root = m_domDocSaveConfig.documentElement();
    if(root.isNull())
    {
        root = m_domDocSaveConfig.createElement(“configuration“);
    }
    SaveROOT(&root);
    m_domDocSaveConfig.appendChild(root);
//#if defined(Q_OS_LINUX)
//    m_wstrFilePath = qApp->applicationDirPath() + “/../Tx2Oled/xmlTest/“+strProName+“.config“;//in linux system
//#else
    QString sFilePath = qApp->applicationDirPath() + “/../../EditPic/test2.config“;//in windows system xmlTest
//#endif
    QFile file(sFilePath);
    if (!file.open(QFile::WriteOnly|QFile::Truncate | QFile::Text))//1.QFile::WriteOnly如果文件不存在,则创建;2.QFile::Truncate打开的同时清空
    {
        return false;
    }
    QTextStream stream( &file );
    stream.setCodec(“utf-8“);
    m_domDocSaveConfig.save(stream4QDomNode::EncodingFromTextStream);
    file.close();
    qSetGlobalQHashSeed(-1);
    return true;
}

void ConfigFileManager::ParseROOT(QDomNode *node)//解析根节点
{
    m_tRoot.m_sVersion = node->toElement().attribute(“version“);
    m_tRoot.m_sTime = node->toElement().attribute(“time“);
    ParseBRANCH_LEVEL1(nodem_tRoot.m_mapBranchLevel1);
}

void ConfigFileManager::ParseBRANCH_LEVEL1(QDomNode *node QMap &mapBranchLevel1)//解析一级分支
{
    QDomNode childnode = node->toElement().firstChild();
    while(!childnode.isNull())
    {
        if(childnode.toElement().tagName() == “BRANCH_LEVEL1“)
        {
            BRANCH_LEVEL1 BranchLevel1;
            BranchLevel1.m_sName = childnode.toElement().attribute(“name“);
            BranchLevel1.m_nAlgoId = childnode.toElement().attribute(“AlgorithmID“).toInt();
            BranchLevel1.m_sNickname = childnode.toElement().attribute(“ni

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2019-05-19 19:52  EditPic\
     文件    57658368  2019-04-01 16:58  EditPic\2_CAL_G.dat
     文件       14906  2019-04-30 19:16  EditPic\configfilemanager.cpp
     文件        3331  2019-04-30 19:10  EditPic\configfilemanager.h
     文件         145  2019-05-19 19:44  EditPic\editpic.ini
     文件        1506  2019-05-16 16:42  EditPic\EditPic.pro
     文件       24352  2019-05-19 19:52  EditPic\EditPic.pro.user
     文件         129  2019-05-19 19:44  EditPic\editpic2.ini
     文件        4651  2019-05-18 16:59  EditPic\imagewidget.cpp
     文件        1388  2019-05-18 16:53  EditPic\imagewidget.h
     文件         183  2019-04-13 16:25  EditPic\main.cpp
     文件       13910  2019-05-19 19:51  EditPic\mainwindow.cpp
     文件        1486  2019-05-18 16:49  EditPic\mainwindow.h
     文件        5974  2019-05-19 14:15  EditPic\mainwindow.ui
     文件        3764  2019-05-17 08:01  EditPic\mytiflib.cpp
     文件        2436  2019-05-17 08:00  EditPic\mytiflib.h
     文件       12197  2019-04-16 16:34  EditPic\processorthread.cpp
     文件        1174  2019-04-16 15:54  EditPic\processorthread.h
     目录           0  2019-04-16 10:44  EditPic\res\
     文件       19803  2019-03-16 11:20  EditPic\res\debug_screenbg.jpg
     文件       20806  2019-04-16 10:44  EditPic\res\frame.png
     文件         130  2019-04-16 10:09  EditPic\res\images.qrc
     文件        1390  2019-04-27 22:11  EditPic\test.config
     文件        1614  2019-05-19 19:51  EditPic\test2.config
     文件         218  2019-04-13 18:30  EditPic\typedef.h

评论

共有 条评论