QImage

71 篇文章 4 订阅

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;
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值