前言

Qt本身就带图片压缩的方法,即利用QPixMap的save方法

最后的效果很好,肉眼基本不可辨别,测试用一张微单拍摄的6K图,原图19.7MB,压缩后变为2.3MB

方法

完整流程:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
void compressImage(QString path)
{
QFile file(ui->lineEdit->text());
if(!file.open(QIODevice::ReadWrite))
{
return;
}

QByteArray bytes = file.readAll();
QImage img;
img.loadFromData(bytes);

QPixmap bk_image;
bk_image.convertFromImage(img);

bk_image.save(path, nullptr, 80); //压缩率从0-100
}