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相关推荐

  1. QImage/QPixmap加载图片失败(宽和高都为0)的两种解决方法

    先看现象,这里有一张图片test.png,windows照片查看器可以正常打开 但是用QImage加载时 QString filePath = qApp->applicationDirPath( ...

  2. xsmax 拨号失败服务器无响应,加载资源失败:服务器响应状态为404(未找到)和nodejs...

    我试图在nodejs服务器上获取html元素数据.但是我一直在浏览器中收到很多错误.这是我的html页面.加载资源失败:服务器响应状态为404(未找到)和nodejs SimplyBPM | Cust ...

  3. Qt QImage 加载 BMP 图像的一个BUG

    这个问题源于水木社区的一个帖子:https://www.mysmth.net/nForum/#!article/KDE_Qt/27466 经过测试 QImage 加载像素数大于 16384*16384 ...

  4. 【Qt】QImage加载bmp位图数据

    QImage直接加载bmp文件 QImage image(image.bmp); QImage加载已经获取的bmp数据 unsigned char *imageData = NULL; int ima ...

  5. android动态设置错误页面,Android中替换WebView加载网页失败时的页面

    我们用webView去请求一个网页链接的时候,如果请求网页失败或无网络的情况下,它会返回给我们这样一个页面,如下图所示: 上面这个页面就是系统自带的页面,你觉得是不是很丑?反正小编本人觉得非常丑,很难 ...

  6. RequireJS首次加载偶尔失败

    RequireJS首次加载偶尔失败 现象:第一次加载JS文件,首次加载偶尔失败: 原因:require(['jquery', 'operamasks', 'zTree', 'jQueryCookie' ...

  7. chrome浏览器加载图片失败问题

    现象:项目上线后,加载图片是正常的.过了一段时间,部分用户反馈加载图片失败,部分用户加载图片正常. 分析:系统是https的,图片链接为http的.Chrome在80版本后(所以部分用户能看到,部分看 ...

  8. 宇视摄像机网页界面登录“提示加载插件失败,点击下载安装最新插件”

    提示加载插件失败,点击下载安装最新插件: 解决方法: 更换浏览器交叉测试:使用IE7以上浏览器登录:清除浏览器缓存,在电脑控制面板卸载原有控件,下载最新控件并安装. 控件卸载: 控制面板--程序--卸 ...

  9. HTML资源未找到,加载资源失败:服务器响应状态为404(未找到)

    我正在关注有关Javascript和Ajax的Lynda教程,并在主题为"使用同步XHR请求"的主题上挂起了这个问题.加载资源失败:服务器响应状态为404(未找到) 基本上HTML ...

  10. 500000服务器响应错误,加载资源失败:服务器响应状态为500(内部服务器错误)Django...

    我在S3文件夹中运行Html文件,在HTML文件中运行/打开HTML文件时出现AJAX调用I我正在低于错误.加载资源失败:服务器响应状态为500(内部服务器错误)Django 无法加载资源:服务器按照 ...

最新文章

  1. 贝叶斯定理的实际应用
  2. 网络推广——网络推广专员如何分析网站关键词排名波动影响因素
  3. html5变动标签新写法,Html5新标签解释及用法
  4. mysql 笔试题_MySQL笔试题详解(一)(中等难度)
  5. hpunix下11gRac的安装
  6. Jquery ajax 访问调用带参数的服务方法!
  7. 中海达手部链接电脑安装软件_山东水文局:较大含沙量条件下中海达ADCP外接测深仪测流系统试验成功...
  8. 【转载】jvm内存回收
  9. 信息学奥赛一本通(1072:鸡尾酒疗法)
  10. HTML5+CSS3实现的响应式垂直时间轴
  11. 锁屏面试题百日百刷-CSS篇(一)
  12. 现代企业,最好都是合伙人制度,都是股份制,全员持股最好
  13. PPT——点鼠标,切换到下一页时,出现延迟几秒的解决办法
  14. 产品读书《谷歌和亚马逊如何做产品》
  15. python时间计算天数差
  16. 英文学习20180206
  17. rtp协议丢包以及包重复判断
  18. 中小型企业 CRM 系统有哪些好的推荐?
  19. 机器人学导论(第三版) 第三章 操作臂运动学 3.5操作臂运动学
  20. 论企业IT信息化与企业文化的关系

热门文章

  1. 【MM小贴士】SAP 批次双单位 CWM 的使用演示
  2. win98 支持html5,win98支持1G以上内存的解决办法
  3. Latex数学公式表
  4. AUTOCAD——计算面积的方法
  5. Python爬取新浪英超曼联文章内页--bs4,json,txt和csv以及编码
  6. 带你一步步破解Android微信聊天记录解决方案
  7. vc2008不安装vcredist发布程序
  8. 算法系列之二十三:离散傅立叶变换之音频播放与频谱显示
  9. 读书笔记-《 我的成功可以复制》四
  10. 《博客页面制作》教程