当前位置:编程学习 > wap >>

Qt 保存jpg图片

我用QImage加载了一个图片,然后修改里面的象素值,然后再用save保存,再用另外一个QImage加载进来,图片的象素跟保存时的象素不一样,为什么呢?望高手帮忙,刚开始学QT,谢谢了
代码大概如下:
QImage pImage;
pImage.load("c:\d.jpg");

QImage pMyImage(pImage);
int pWidth = pImage.width();
int pHeight = pImage.height();
for(int i=0; i<pWidth; i++)
{
     for(int j=0;j<pHeight;j++)
     {
          QRgb pRgb= pImage.pixel(i,j); //----1
          .....
          .....//对pRgb进行处理
          .....
          pMyImage.setPixel(i,j,pRgb);  //----2
     }
}

pMyImage.save("c:\p.jpg");

QImage pRes;
pRes.load("c:\p.jpg");
QRgb pRes= pImage.pixel(0,0);           //----3


当i=j=0时,上面1处事是d.jpg的RGB值pRgb,对它进行一定的转换后得到新的RGB值pRgb
但是当调用save保存为p.jpg后,再次打开p.jpg获取其第一个RGB得到的值3与2处的同样
是(0,0)的RGB不一样,这是哪里不对呢?如果要实现这一的功能应该怎么完成呢?

我的意思就是要对a.jpg进行处理然后保存为b.jpg,然后以后要重新加载b.jpg来进行处理。
请问高手该怎么处理才行呢?谢谢了!

--------------------编程问答-------------------- 我怀疑你压根就没有文件操作过,因为你的文件路径全错了。
应该是 c:\\d.jpg --------------------编程问答-------------------- 不好意思,我打错了,我就是用的“c:\\d.jpg”这个哈 --------------------编程问答-------------------- jpg是压缩格式。我觉得你用bmp图片测试下应该没什么问题的 --------------------编程问答-------------------- Qt写保存图片的slot槽函数? --------------------编程问答-------------------- bool save ( const QString & fileName, const char * format = 0, int quality = -1 ) const

你保存的图片就是压缩后的,所以加载回来效果就是差的.

这么保存pMyImage.save("c:\p.jpg,0,100");就ok了 

散分吧

补充:移动开发 ,  Qt
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,