QT:为图片加当前系统时间水印

获取系统时间
使用QDateTime 这一个类来获取当前的系统的日期以及时间,使用QDateTime 这一个类需要的头文件:

  #include 
  /*创建日期时间对象并获取当前的时间*/
  QDateTime dateTime( QDateTime::currentDateTime() );

  /*获取系统时间并转换为QString 类型,时间的格式:年-月-日  时-分-秒*/
  QString time = dateTime.toString( "yyyy-MM-dd hh:mm:ss" );

打开图片并设置水印的相关参数(水印字体大小,位置等);
使用 QImage 和 QPainter 这两个类需要添加相应的头文件:

#include 
#include 
    /*要添加水印的图片的路径以及文件名,使用绝对路径*/
    QString filePath = "C:/Users/Desktop/demo.jpg";
   
    /*用QImage这个类创建一个对象并打开图片文件*/
    QImage image = QPixmap(filePath).toImage();
    
    /*为QImage对象构造一个QPainter对象,用于添加水印*/
    QPainter painter(&image); 
    
    /*获取画笔并设置画笔的相关参数*/
    QPen pen = painter.pen();
    pen.setColor(Qt::black);//设置画笔颜色
     /*获取字体的相关参数*/
    QFont font = painter.font();
    font.setBold(true);//字体加粗
    font.setPixelSize(25);//设置字体大小
    /*提交设置好的参数*/
    painter.setPen(pen);
    painter.setFont(font);
	/*添加水印,QPoint为水印的起始位置,time为水印内容*/
    painter.drawText( QPoint(0,0),time );
    
    /*保存文件*/
    image.save(filename);

以上的代码便可以为一张图片添加当前系统时间水印;
将以上代码封装成一个函数:

void AddWaterMark::addwatermark()
{
    QDateTime dateTime( QDateTime::currentDateTime() );
    QString time = dateTime.toString( "yyyy-MM-dd hh:mm:ss" );

    QString filePath = "C:/Users/Desktop/demo.jpg";
    QImage image = QPixmap(filePath).toImage();

    QPainter painter(&image);
    QPen pen = painter.pen();
    pen.setColor(Qt::black);
    QFont font = painter.font();
    font.setBold(true);/
    font.setPixelSize(15);
    painter.setPen(pen);
    painter.setFont(font);
    painter.drawText( QPoint(10,15),time );
    
    image.save(filePath);
}

效果图:
QT:为图片加当前系统时间水印_第1张图片
要想添加图片或其它形式的水印,操作过程类似,可以根据思路自己摸索一下。
接触QT时间不长,若是存在错误,还望大家能指出^ 。^,希望能帮到需要的人~

你可能感兴趣的:(QT:为图片加当前系统时间水印)