qt中,图片自适应QLabel显示

无自适应,直接显示

 //将图片格式转换成QImage格式,否则不能再lable上显示
    // QImage    imag; //声明QImage对象
    imag = QImage((const unsigned char *)(matData.data),
  // a 这表示直接将图片裁剪成label大小,无法实现图片自适应显示
                  ui->picture->width(),
                  ui->picture->height(),   
                   static_cast<int>(matData.step),
//图像格式:QImage::Format_RGB32 ,QImage::Format_RGB888,QImage::Format_Indexed8
                   QImage::Format_RGB888);

    //b  对应a,要用这种方式来显示   QImage-->QPixmap
    ui->picture->setPixmap(QPixmap::fromImage(imag));

自适应显示

 //将图片格式转换成QImage格式,否则不能再lable上显示
    // QImage    imag; //声明QImage对象
    imag = QImage((const unsigned char *)(matData.data),
 /*a/ 这表示直接将图片裁剪成label大小,无法实现图片自适应显示
                  ui->picture->width(),
                  ui->picture->height(),   */
   /* 为实现图片可以自适应显示在label上:
    * 1/将mat格式的图片转换成Qimage格式,图片大小就是原图的大小(mat的大小)  */            
                   matData.cols,
                   matData.rows,
                   static_cast<int>(matData.step),
//图像格式:QImage::Format_RGB32 ,QImage::Format_RGB888,QImage::Format_Indexed8
                   QImage::Format_RGB888);
    //2 将Qimage格式的图片转成Qpixmap格式
    QPixmap pix = QPixmap::fromImage(imag);
    //3 设置pixmap缩放的尺寸
    pix.scaled(ui->picture->size(), Qt::KeepAspectRatio);
    /*4  它的作用是设置label的属性scaledContents,
    这个属性的作用是允许(禁止)label缩放它的内容充满整个可用的空间。
    特别说明的一点是当使能该属性并且label显示pixmap时,它能够缩放pixmap充满整个可用的空间。*/
    ui->picture->setScaledContents(true);
    //5 用label显示一张图片
    ui->picture->setPixmap(pix);

扩展:QT图片格式转换(QImage和QPixmap、QImage和Mat互转)

1 QPixmap-->QImage:
QPixmap pix(path);
QImage img = pix.toImage();

2 QImage-->QPixmap:
QImage img(path);
QPixmap pix = QPixmap::fromImage(img);

3 QImage-->Mat:
cv::Mat mat;
mat = cv::Mat(image.height(), image.width(), CV_8UC4, (void*)image.constBits(), image.bytesPerLine())

4 Mat-->QImage:
QImage image(mat.cols, mat.rows, QImage::Format_Indexed8);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

One Piece&

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值