29黑马QT笔记之QImage保存图片

29黑马QT笔记之QImage保存图片

1 QPixmap、QImage、QPictrue三种绘图工具之间的区别:
上一篇我们讲到QPixmap如何在窗口进行绘图,接下来本篇要讲的是QPixmap如何保存一张图片,即将已有图片再按自己方式保存。首先我们先提一下三种绘图工具的区别。
1)QPixmap:不能对图片修改,主要用于屏幕绘图,因为它在屏幕绘图时自己优化了,不同电脑优化程度不一样,与显卡等电脑元件有关。
2)QImage:可以对图片某个部位进行修改,可以在线程绘图(后面多线程时用到)。不能优化,所以和电脑(平台)无关。
3)QPictrue:实际上这个不是用于绘图,而是用于保存二进制图片,方便在不同电脑平台之间保存图片的状态完整性。
注意:QPixmap、QImage既可以用于绘图,又可以作绘图设备时保存图片。而QPicture只能用于作绘图设备时保存图片状态,保存前需要用到前两种方法绘图。

2 QImage使图片透明时的注意事项:
QImage保存图片步骤与QPixmap一样,只不过QImage创建绘图设备区域时多了一个参数3,可以指定图片的格式,例如是否透明。
QImage使图片透明时,需要保持原来图片的格式后缀才能透明,否则不行。例如本来后缀是png,你保存后改成jpg,则不是透明,这一点需要注意。QPixmap保存后不管什么后缀都变成不透明,因为自动优化了嘛。

3 代码:

    //不是在窗口绘图不需要重写绘图事件

    //1 创建绘图设备 指定透明背景且只能保存为原来格式才能透明 --例如本来png改成jpg就不是透明
    QImage image(400,300,QImage::Format_ARGB32);   //比QPixmap多一个参数 参三格式设置为透明

    //2 创建画家并指定绘图设备
    QPainter p(&image);

    //3 开始绘图操作
    p.drawImage(0,0,QImage("C:/Users/Administrator/Desktop/MyQtCode/day04/06_QImage/face"));

    //QImage可以修改图片
    //对图片的2500个像素进行修改
    for(int i=0;i<50;i++)
    {
        for(int j=0;j<50;j++)
        {
            //设置像素
            image.setPixel(QPoint(i,j),qRgb(0,255,0));
        }
    }

    //4 保存图片 画家保存不了 只能用绘图设备image
    //p.save();
    image.save("C:/Users/Administrator/Desktop/MyQtCode/day04/06_QImage/face11.png");

你可能感兴趣的:(黑马Qt笔记)