• 5176阅读
  • 8回复

一张png的图片,里头有红黑两色,怎么过滤掉红色,只显示黑色,且可以设置黑色的透明度~? [复制链接]

上一主题 下一主题
离线shixingya
 

只看楼主 倒序阅读 楼主  发表于: 2015-02-12
一张png的图片,里头有红黑两色,怎么过滤掉红色,只显示黑色,且可以设置黑色的透明度~?
本人2008年9月至2012年6月在三亚学院学习计算机科学与技术专业四年,2012年6月毕业后至今一直在北京市从事软件开发相关工作。本人的技术栈是C++、熟悉Qt、CEF框架。参与或负责过多款Windows、Linux环境下桌面软件的研发。
参加工作十年来,使用Qt参与开发过一个军工仿真想定建模工具,仿真陆、海、空潜等各兵种的作战平台(包括地面车辆、水面舰艇、固定翼/旋转翼飞机、潜艇等)的运动方式和工作流程,实现陆、海、空、潜立体化协同作战仿真。在国美调研过电商OA办公工具的开发设计、在广联达参与了BIM软件的协作开发、在书生电子独立负责过OFD版式阅读器客户端的开发、在跟谁学使用Qt WebEngine、QGraphics等主导了练习批改工具的开发,在蓝湖基于WebAssembly对标Figma参与开发了一款原型设计工具mastergo,在小米集团技术委员会承担了平台应用研发工作,目前在凌云光从事视觉相关应用平台开发。十多年的软件开发工作,让我在软件工程、程序设计、系统架构方面积累了丰富且宝贵的经验。
有同行的朋友,可以加我微信,一起进步
我叫史星亚 微信: EagleAndy  
加好友时请备注  来自qtcn
我有个Qt交友群,拉您入群
非工作时间 可以电联 18610042411
*********************************************************
另低价出售
→各种软件小程序定制!
→SAP教程,涵盖BI/SD/FICO/HANA等各种模块视频教程,购买教程,拾取金领顾问教程!
→各种考证考研题库,保证考证考研成功上岸!
→抖音快手微博朋友圈各种点赞支持,最快一分钟上万赞!
→挂机打卡,远程叫醒,等各种服务欢迎私信EagleAndy开启!
转发此内容,私信EagleAndy,有定制盲盒寄送!
离线roywillow

只看该作者 1楼 发表于: 2015-02-12
QImage可以用scanLine()获得图像每行的原始数据,并可以以数组的形式访问和读取,剩下的靠你了
或者自己构造适当的QImage用QPainter以适当的compositionMode把这个image绘制在原图上
专业维修核潜艇,回收二手航母、二手航天飞机,大修核反应堆,拆洗导弹发动机更换机油,无人侦察机手动挡改自动,航天飞机保养换三滤,飞碟外太空年检 ,各型号导弹加装迎宾踏板,高空作业擦洗卫星表面除尘、打蜡及抛光,东风全系列巡航导弹。并提供原子对撞机。量大从优,有正规发票。
离线stlcours

只看该作者 2楼 发表于: 2015-02-12
PNG图像格式复杂,不可能扫描后使用。倒是可以先转换成BMP,然后扫描,然后对每个pixel把红色全部换成你想要的颜色。
离线roywillow

只看该作者 3楼 发表于: 2015-02-12
回 stlcours 的帖子
stlcours:PNG图像格式复杂,不可能扫描后使用。倒是可以先转换成BMP,然后扫描,然后对每个pixel把红色全部换成你想要的颜色。 (2015-02-12 21:18) 

你想多了,QImage的“格式”不是文件的格式
专业维修核潜艇,回收二手航母、二手航天飞机,大修核反应堆,拆洗导弹发动机更换机油,无人侦察机手动挡改自动,航天飞机保养换三滤,飞碟外太空年检 ,各型号导弹加装迎宾踏板,高空作业擦洗卫星表面除尘、打蜡及抛光,东风全系列巡航导弹。并提供原子对撞机。量大从优,有正规发票。
离线stlcours

只看该作者 4楼 发表于: 2015-02-13
回 roywillow 的帖子
roywillow:你想多了,QImage的“格式”不是文件的格式 (2015-02-12 22:05) 

但是如果QImage内部不做BMP转换,也能扫描吗?PNG不是压缩格式吗?
如果QImage内部自动做BMP转换,岂不是效率很低?到底怎么回事能解释一下吗?
离线roywillow

只看该作者 5楼 发表于: 2015-02-13
回 stlcours 的帖子
stlcours:但是如果QImage内部不做BMP转换,也能扫描吗?PNG不是压缩格式吗?
如果QImage内部自动做BMP转换,岂不是效率很低?到底怎么回事能解释一下吗? (2015-02-13 00:06) 

QImage是用来在内存中存放图像数据的,对它来说效率不重要,它只要保证数据存储的准确性和一致性就好了,它的“格式”是指像素数据在内存中以什么样的形式存放,比如是index8还是argb32,与文件格式无关,因为QImage可以存储来自任何形式的图像数据
如果QImage以压缩形式存储数据,那么每次使用它的时候岂不是都得解压缩一遍?效率岂不是更低?
专业维修核潜艇,回收二手航母、二手航天飞机,大修核反应堆,拆洗导弹发动机更换机油,无人侦察机手动挡改自动,航天飞机保养换三滤,飞碟外太空年检 ,各型号导弹加装迎宾踏板,高空作业擦洗卫星表面除尘、打蜡及抛光,东风全系列巡航导弹。并提供原子对撞机。量大从优,有正规发票。
离线dosmlp

只看该作者 6楼 发表于: 2015-02-14
  1. void bmp::on_openfile_clicked()
  2. {
  3.     QString ImageFileName = QFileDialog::getOpenFileName(this,"Open Image","e:\\","File(*.jpg *.bmp *.png)");
  4.     if(ImageFileName.isEmpty()) return;
  5.     img.load(ImageFileName);
  6.     pp = pp.fromImage(img).scaledToWidth(ui->label->width());
  7.     ui->label->setPixmap(pp);
  8. }
  9. //黑白
  10. void bmp::on_wb_clicked()
  11. {
  12.     int w = img.width();
  13.     int h = img.height();
  14.     for(int i=0;i<w;++i){
  15.         for(int j=0;j<h;++j){
  16.             QRgb qr = img.pixel(i,j);
  17.             unsigned int wb = (qRed(qr)+qGreen(qr)+qBlue(qr))/3;
  18.             QRgb v = qRgb(wb,wb,wb);
  19.             img.setPixel(i,j,v);
  20.         }
  21.     }
  22.     pp = pp.fromImage(img).scaledToWidth(ui->label->width());
  23.     ui->label->setPixmap(pp);
  24. }
  25. //去除红色
  26. void bmp::on_RemoveRed_clicked()
  27. {
  28.     int w = img.width();
  29.     int h = img.height();
  30.     for(int i=0;i<w;++i){
  31.         for(int j=0;j<h;++j){
  32.             QRgb qr = img.pixel(i,j);
  33.             qr = qRgb(0,qGreen(qr),qBlue(qr));
  34.             img.setPixel(i,j,qr);
  35.         }
  36.     }
  37.     pp = pp.fromImage(img).scaledToWidth(ui->label->width());
  38.     ui->label->setPixmap(pp);
  39. }


typedef QRgb
An ARGB quadruplet on the format #AARRGGBB, equivalent to an unsigned int.

The type also holds a value for the alpha-channel. The default alpha channel is ff, i.e opaque. For more information, see the Alpha-Blended Drawing section.
离线shixingya

只看该作者 7楼 发表于: 2015-02-26
以上方法都不好使 有没有更好的思路~?
本人2008年9月至2012年6月在三亚学院学习计算机科学与技术专业四年,2012年6月毕业后至今一直在北京市从事软件开发相关工作。本人的技术栈是C++、熟悉Qt、CEF框架。参与或负责过多款Windows、Linux环境下桌面软件的研发。
参加工作十年来,使用Qt参与开发过一个军工仿真想定建模工具,仿真陆、海、空潜等各兵种的作战平台(包括地面车辆、水面舰艇、固定翼/旋转翼飞机、潜艇等)的运动方式和工作流程,实现陆、海、空、潜立体化协同作战仿真。在国美调研过电商OA办公工具的开发设计、在广联达参与了BIM软件的协作开发、在书生电子独立负责过OFD版式阅读器客户端的开发、在跟谁学使用Qt WebEngine、QGraphics等主导了练习批改工具的开发,在蓝湖基于WebAssembly对标Figma参与开发了一款原型设计工具mastergo,在小米集团技术委员会承担了平台应用研发工作,目前在凌云光从事视觉相关应用平台开发。十多年的软件开发工作,让我在软件工程、程序设计、系统架构方面积累了丰富且宝贵的经验。
有同行的朋友,可以加我微信,一起进步
我叫史星亚 微信: EagleAndy  
加好友时请备注  来自qtcn
我有个Qt交友群,拉您入群
非工作时间 可以电联 18610042411
*********************************************************
另低价出售
→各种软件小程序定制!
→SAP教程,涵盖BI/SD/FICO/HANA等各种模块视频教程,购买教程,拾取金领顾问教程!
→各种考证考研题库,保证考证考研成功上岸!
→抖音快手微博朋友圈各种点赞支持,最快一分钟上万赞!
→挂机打卡,远程叫醒,等各种服务欢迎私信EagleAndy开启!
转发此内容,私信EagleAndy,有定制盲盒寄送!
离线abc881858

只看该作者 8楼 发表于: 2015-02-26
使用PS 然后打开PS后的图片
快速回复
限100 字节
 
上一个 下一个