QImage绘制图片问题

永远的魔术1号 2012-12-11 10:47:07
我将像素颜色从一张图片中(QImage对象中)读取出来,得到rgba值,再将rgba值用setPixel写入另一个空的QImage对象中,该QImage对象格式为QImage::Format_ARGB32,然后保存。但保存后的图片透明度与原图不同。

如何保存像素颜色的透明度呀?
...全文
996 8 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
jdwx 2012-12-20
  • 打赏
  • 举报
回复

图片在这,新建一个gui程序放两个QLabel,一个按钮,图片放到资源文件里(注意名称和路径),把代码放到槽里。
  • 打赏
  • 举报
回复
引用 5 楼 jdwx1 的回复:
下面是代码: C/C++ code ? 123456789101112 QImage imagesource(":/pngs/mj.png"); ui->label->setPixmap(QPixmap::fromImage(imagesource)); QImage imagetarget(imagesource.size(), QImag……
完全看不出来啊,代码跟你的一样的,但是没有效果啊!
  • 打赏
  • 举报
回复
引用 7 楼 jdwx1 的回复:
图片在这,新建一个gui程序放两个QLabel,一个按钮,图片放到资源文件里(注意名称和路径),把代码放到槽里。
。。。你的图片好Qt....
jdwx 2012-12-12
  • 打赏
  • 举报
回复
void QImage::fill ( const QColor & color ) //color = QColor(0, 0, 0, 0);
jdwx 2012-12-12
  • 打赏
  • 举报
回复
新的image需要fill一下,用透明的颜色r, g, b, a = 0, 0, 0, 0 新建一个image不做任何处理,看看是不是黑色的?
jdwx 2012-12-12
  • 打赏
  • 举报
回复
下面是代码:
    QImage imagesource(":/pngs/mj.png");
    ui->label->setPixmap(QPixmap::fromImage(imagesource));
    QImage imagetarget(imagesource.size(), QImage::Format_ARGB32);
    imagetarget.fill(QColor(0, 0, 0, 0));
    QRgb rgb;
    for(int row = 0; row < imagesource.height(); ++row){
        for(int col = 0; col < imagesource.width(); ++col){
            rgb = imagesource.pixel(row, col);
            imagetarget.setPixel(row, col, rgb);
        }
    }
    ui->label_2->setPixmap(QPixmap::fromImage(imagetarget));
jdwx 2012-12-12
  • 打赏
  • 举报
回复
刚才特意测试了一下,fill有没有都行,不是必要的,透明度可以很好的复制过去。见下图:左边是原图,特意用暗背景。
  • 打赏
  • 举报
回复
引用 1 楼 jdwx1 的回复:
新的image需要fill一下,用透明的颜色r, g, b, a = 0, 0, 0, 0 新建一个image不做任何处理,看看是不是黑色的?
不好使啊,我先前填充了透明,但是后来我是每个像素都重新填充了颜色,这样会将之前填充的透明都覆盖,并且我每个像素的透明度可能不一样啊,这样操作搞不定啊

16,818

社区成员

发帖
与我相关
我的任务
社区描述
Qt 是一个跨平台应用程序框架。通过使用 Qt,您可以一次性开发应用程序和用户界面,然后将其部署到多个桌面和嵌入式操作系统,而无需重复编写源代码。
社区管理员
  • Qt
  • 亭台六七座
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧