注意:使用QPainter与setPixel操做的图片需要是彩图才可以画彩色的线条,灰度图可以画黑色线。
方法一:QPainter
QImage image(QString::fromStdString(m_file_path));
if(image.isNull())
{
qDebug() << "load image error";
return ;
}
QImage newimage = image.convertToFormat(QImage::Format_RGB32); //将灰度图转为彩图,描画彩色十字线,这步操作十分必要,否则只能描画灰度图中的颜色线条
QImage::Format a = newimage.format();
size_t w = image.width();
size_t h = image.height();
QPainter painter(&image);
painter.setPen(QPen(Qt::red,5,Qt::SolidLine,Qt::RoundCap));
painter.drawLine(QPoint(0, h/2), QPoint(w, h/2));
painter.drawLine(QPoint(w/2, 0), QPoint(h/2, h));
painter.end();
newimage.save("./a.png");
方法二:setPixel
QImage image(QString::fromStdString(m_file_path));
if(image.isNull())
{
qDebug() << "load image error";
return ;
}
QImage newimage = image.convertToFormat(QImage::Format_RGB32);
QImage::Format a = newimage.format();
size_t w = image.width();
size_t h = image.height();
for(int i=0;i<w;i++)
{
newimage.setPixel(i, h/2, qRgb(255,0,0));
}
for(int j=0;j<h;j++)
{
newimage.setPixel(w/2, j, qRgb(255,0,0));
}
newimage.save("./a.png");