在一个图片上写字然后在保存出来可以先将图片导入,然后利用setpen在图上写字然后导出图片
下面提供源代码
void Widget::SaveImage()
{
QImage image = QPixmap(fileName).toImage();//绝对路径
//以你原来的那张图片来
//构造一个image
QPainter painter(&image); //为这个QImage构造一个QPainter
painter.setCompositionMode(QPainter::CompositionMode_SourceIn);
//设置画刷的组合模式CompositionMode_SourceOut这个模式为目标图像在上。
//改变画笔和字体
QPen pen = painter.pen();
pen.setColor(Qt::white);
QFont font = painter.font();
font.setBold(true);//加粗
font.setPixelSize(18);//改变字体大小
painter.setPen(pen);
painter.setFont(font);
painter.drawText(220,190,"XXXXXXXX");
//将XXXX写在Image的220.190的位置
image.save("C:/X1.bmp",0);
//将画好的图片保存起来。
//可以将png改为其他格式
}
此处有一个注意的问题:
对于图片的格式虽然没有严格要求,但是在使用BMP的时候,由于QImage里不支持RGB565的格式,会导致setPen没有效果,不能写字,所以必须先转换成任意一种Qt可以支持的格式,然后再写,弄完后,如果需要保留256色,可以选择再转回带调色盘的Format_Indexed8就可以了.所以修改的源代码如下
void Widget::SaveImage()
{
QImage image = QPixmap(fileName).toImage();//绝对路径
//以你原来的那张图片来
//构造一个image
QImage img = image.convertToFormat(QImage::Format_RGB888); //先转成标准的RGB888或者别的可以支持的模式
QPainter painter(&img); //为这个QImage构造一个QPainter
painter.setCompositionMode(QPainter::CompositionMode_SourceIn);
//设置画刷的组合模式CompositionMode_SourceOut这个模式为目标图像在上。
//改变画笔和字体
QPen pen = painter.pen();
pen.setColor(Qt::white);
QFont font = painter.font();
font.setBold(true);//加粗
font.setPixelSize(18);//改变字体大小
painter.setPen(pen);
painter.setFont(font);
painter.drawText(220,190,"XXXXXXXX");
//将Hello写在Image的中心
QImage Foto = img.convertToFormat(QImage::Format_Indexed8); //再用8位指标转化成Colormap
Foto.save("C:/X1.bmp",0);
//将画好的图片保存起来。
//可以将png改为其他格式
}