资源简介
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\fr
文件 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
- 上一篇:QQxm
l扫描器.exe 免费版 - 下一篇:矩阵论经典教材
相关资源
- qt调用讯飞实时语音接口WEBAPI
- Qt编写的录屏软件,抓屏-合成视频录
- 《Qt 5编程入门》书籍配套源码
- mingw编译的opencv库
- 米依公司激光扫描仪上位机例程,Q
- Qt及Qt Quick开发实战精解代码
- 多线程TCP服务器运行程序
- 技小新-MQTT单片机编程小工具.zip
- Qt:实战小程序源代码
- 亚马逊棋Qt源代码和可执行程序
- 基于QT设计的网络音乐播放器
- FFmpeg+qt实现的播放器工程
- QT5.7 + OPENCV3.2 + 动态条形码识别
- 手把手Qt串口调试助手开发源码
- qt温湿度上位机源码
- CodeEditor
- VS+QT+Balser相机开发
- qtcreator-gdb-7.4-MINGW32_NT-6.1-i686.tar QT4 调
- Qt海康威视SDK二次开发登录与预览
- qt3安装必备大礼包
- 基于SeetaFace+VS2017+Qt的人脸识别
- QT图像处理系统三合一
- texstudio-2.12.22-win-qt5.zip
- QT Creator快速入门(第3版 高清PDF)
- Qt Creator for Linux 32位 qt-creator-linux-x8
- qt 局域网图像(json文件打包)传输
-
mediaPla
yer.zip - 北邮计算机网络实验-用开源代码实验
- 基于Qt5.9.1(MSVC) PJSIP网络电话源代码
- arm-none-linux-gnueabi-gcc-4.8.3
评论
共有 条评论