QImage创建清空和空判断
QImage(1280,720,QImage::Format_RGBA8888); //宽度以4对齐
QImage img("1.jpg");
if(!img.load("1.jpg")){}
QImage img(data,1280,720,QImage::Format_RGBA8888) //uchar *data
QImage img = src.copy();
QImage img(src);
img = QImage(); //清空
img.isNull();
img.save("1.png");
QImage数据读写
QColor pixelColor(int x,int y) const;
uchar *scanLine(int i);
uchar *bits();
void setPixelColor(int x,int y,const QColor *color)
void fill(const QColor &color)
int bytesPerLine() const;
int byteCount() const;
QImage存储图片
bool save(const QString &fileName,const char* format = Q_NULLPTR,int quality = -1);
quality 0-100
format 0表示根据文件名
QImage图像的缩放
QImage QImage::scaled(const QSize &size, Qt::AspectRatioMode aspectRatioMode = Qt::IgnoreAspectRatioMode = Qt::IgnoreAspectRatio,Qt::TransformationMode,
transformMode = Qt::FastTransformation) const;
widget.cpp
#include "widget.h"
#include "ui_widget.h"
#include <QPainter>
Widget::Widget(QWidget *parent)
: QWidget(parent)
, ui(new Ui::Widget)
{
ui->setupUi(this);
img = QImage(1280,720,QImage::Format_RGBA8888);
img.fill(QColor(255,0,0,200));
//遍历设置颜色
uchar *data = img.bits();
//假定已对齐 不对齐就出错
for(int i = 0; i < img.width();i++)
{
for(int j = 0; j < img.height() / 2;j++)
{
data[j*img.width()*4 + i * 4] = 0; //R
data[j*img.width()*4 + i * 4+1] = 255; //G
data[j*img.width()*4 + i * 4+1] = 0; //B
data[j*img.width()*4 + i * 4+1] = 255; //A
}
}
for(int i = img.width()/2; i < img.width();i++)
{
for(int j = 0; j < img.height() / 2;j++)
{
img.setPixelColor(i,j,QColor(0,0,0,255));
}
}
}
void Widget::paintEvent(QPaintEvent *ev)
{
QPainter p(this);
if(!img.isNull())
{
p.drawImage(0,0,img);
}
}
Widget::~Widget()
{
delete ui;
}