qimage加载jpg失败_QImage基本api
QImage这个类之前用过,无外乎是加载一个图片文件显示出来,并没有做过多的研究,目前工作中用到了灰度图以及图片的像素操作,重新学习了下,记录记录。
一些基本操作方法
- 获取图像的首地址:
const uchar *QImage::bits() const
- 获取图像的总字节数
int QImage::byteCount() const
- 获取图像每行字节数
int QImage::bytesPerLine() const 还可以这样计算(width:图像宽度,img.depth是图图像深度):int bytePerLine = (width * img.depth() + 31) / 32 * 4;
- 存入图像,格式为R,G,B,A(0,1,2,3)
QImage::Format_RGB32
- 存入图像,格式为R,G,B(0,1,2)
QImage::Format_RGB888
- 存入图像,此时需要设定一张颜色表QVector,如下
QImage::Format_Indexed8 灰度颜色表:QVector vtrColor;for(int k = 0;k < 256;++k){` vtrColor.push_back( qRgb(k,k,k) );}
相关概念
灰度图
普通彩色图片中每个像素中有R、G、B三个分量,而每个分量有256种(0~255)值可以选择,这样一个像素点就可以有1600多万(255255255)的颜色变化范围。
而灰度图就是R、G、B三分分量的值相同的一种特殊彩色图像。即R=G=B.
位深
位深是指存储每个像素所用的位数.
如上面介绍的QImage方法,img.depth(),该方法可以返回当前图像的位深.
处理算法
- 常规处理
unsigned char *grayData; QImage img; img.load (m_strPath+"/2.jpg"); QPixmap pixmap(QPixmap::fromImage (img)); ui->label->setPixmap (pixmap); unsigned char *data = img.bits (); int w = img.width (); int h = img.height (); int bytePerLine = (w * 24 + 31) / 8; //存储处理后的数据 grayData = new unsigned char [bytePerLine * h]; unsigned char r,g,b; for ( int i = 0; i < h; i++ ) { for ( int j = 0; j < w; j++ ) { r = *(data + 2); g = *(data + 1); b = *data; grayData[i * bytePerLine + j * 3] = (r * 30 + g*59 +b*11)/100; grayData[i*bytePerLine+j*3+1]=(r*30+g*59+b*11)/100; grayData[i*bytePerLine+j*3+2]=(r*30+g*59+b*11)/100; data+=4; //ui->textEdit->append (QString("%1 %2 %3").arg (r).arg (g).arg (b)); } } QImage grayImage(grayData,w,h,bytePerLine,QImage::Format_RGB888); QPixmap pixmap2(QPixmap::fromImage (grayImage)); ui->label_2->setPixmap (pixmap2);
最终效果
qimage加载jpg失败_QImage基本api相关推荐
- QImage/QPixmap加载图片失败(宽和高都为0)的两种解决方法
先看现象,这里有一张图片test.png,windows照片查看器可以正常打开 但是用QImage加载时 QString filePath = qApp->applicationDirPath( ...
- xsmax 拨号失败服务器无响应,加载资源失败:服务器响应状态为404(未找到)和nodejs...
我试图在nodejs服务器上获取html元素数据.但是我一直在浏览器中收到很多错误.这是我的html页面.加载资源失败:服务器响应状态为404(未找到)和nodejs SimplyBPM | Cust ...
- Qt QImage 加载 BMP 图像的一个BUG
这个问题源于水木社区的一个帖子:https://www.mysmth.net/nForum/#!article/KDE_Qt/27466 经过测试 QImage 加载像素数大于 16384*16384 ...
- 【Qt】QImage加载bmp位图数据
QImage直接加载bmp文件 QImage image(image.bmp); QImage加载已经获取的bmp数据 unsigned char *imageData = NULL; int ima ...
- android动态设置错误页面,Android中替换WebView加载网页失败时的页面
我们用webView去请求一个网页链接的时候,如果请求网页失败或无网络的情况下,它会返回给我们这样一个页面,如下图所示: 上面这个页面就是系统自带的页面,你觉得是不是很丑?反正小编本人觉得非常丑,很难 ...
- RequireJS首次加载偶尔失败
RequireJS首次加载偶尔失败 现象:第一次加载JS文件,首次加载偶尔失败: 原因:require(['jquery', 'operamasks', 'zTree', 'jQueryCookie' ...
- chrome浏览器加载图片失败问题
现象:项目上线后,加载图片是正常的.过了一段时间,部分用户反馈加载图片失败,部分用户加载图片正常. 分析:系统是https的,图片链接为http的.Chrome在80版本后(所以部分用户能看到,部分看 ...
- 宇视摄像机网页界面登录“提示加载插件失败,点击下载安装最新插件”
提示加载插件失败,点击下载安装最新插件: 解决方法: 更换浏览器交叉测试:使用IE7以上浏览器登录:清除浏览器缓存,在电脑控制面板卸载原有控件,下载最新控件并安装. 控件卸载: 控制面板--程序--卸 ...
- HTML资源未找到,加载资源失败:服务器响应状态为404(未找到)
我正在关注有关Javascript和Ajax的Lynda教程,并在主题为"使用同步XHR请求"的主题上挂起了这个问题.加载资源失败:服务器响应状态为404(未找到) 基本上HTML ...
- 500000服务器响应错误,加载资源失败:服务器响应状态为500(内部服务器错误)Django...
我在S3文件夹中运行Html文件,在HTML文件中运行/打开HTML文件时出现AJAX调用I我正在低于错误.加载资源失败:服务器响应状态为500(内部服务器错误)Django 无法加载资源:服务器按照 ...
最新文章
- 贝叶斯定理的实际应用
- 网络推广——网络推广专员如何分析网站关键词排名波动影响因素
- html5变动标签新写法,Html5新标签解释及用法
- mysql 笔试题_MySQL笔试题详解(一)(中等难度)
- hpunix下11gRac的安装
- Jquery ajax 访问调用带参数的服务方法!
- 中海达手部链接电脑安装软件_山东水文局:较大含沙量条件下中海达ADCP外接测深仪测流系统试验成功...
- 【转载】jvm内存回收
- 信息学奥赛一本通(1072:鸡尾酒疗法)
- HTML5+CSS3实现的响应式垂直时间轴
- 锁屏面试题百日百刷-CSS篇(一)
- 现代企业,最好都是合伙人制度,都是股份制,全员持股最好
- PPT——点鼠标,切换到下一页时,出现延迟几秒的解决办法
- 产品读书《谷歌和亚马逊如何做产品》
- python时间计算天数差
- 英文学习20180206
- rtp协议丢包以及包重复判断
- 中小型企业 CRM 系统有哪些好的推荐?
- 机器人学导论(第三版) 第三章 操作臂运动学 3.5操作臂运动学
- 论企业IT信息化与企业文化的关系