1、Qt版本: 6.2MB 壓縮成 170KB, 49倍
(1)、發送方
QImage image("/home/maya/Desktop/image/IMG00054.BMP");
QBuffer buf;
buf.open(QIODevice::ReadWrite);
image.save(&buf,"JPG"); //用於直接將 image 壓縮後 保存在 QByteArray 中
QByteArray ba = buf.data(); //發送出去
buf.close();
qDebug() << image.byteCount() << ba.size() << image.byteCount() / ba.size();
(2)、接收方
QPixmap pix;
pix.loadFromData(ba, "JPG");
pix.save("/home/maya/Desktop/image/111.jpg");
QImage img;
img.loadFromData(ba, "JPG");
img.save("/home/maya/Desktop/image/222.jpg");
2、OpenCV版本:
////////////////////////////////////////////////////////////////////
(1)、發送方
Mat mat1 = imread("/home/maya/Desktop/image/IMG00054.BMP", CV_LOAD_IMAGE_COLOR);
vector<int> param = {CV_IMWRITE_JPEG_QUALITY, 75};
vector<uchar> buf;
imencode(".jpg", mat1, buf, param);
qDebug() << buf.size();
(2)、接收方
Mat mat2 = imdecode(buf, CV_LOAD_IMAGE_COLOR);
imwrite("/home/maya/Desktop/image/jpg075.jpg", mat2, param);
QImage image("/home/maya/Desktop/image/IMG00054.BMP");
QBuffer buf;
buf.open(QIODevice::ReadWrite);
image.save(&buf,"JPG"); //用於直接將 image 壓縮後 保存在 QByteArray 中
////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////
(3)發送方
vector<uchar> buff;
for (QChar c : buf.data())
{
buff.push_back(c.toLatin1());
}
(4)、接收方
vector<int> param = {CV_IMWRITE_JPEG_QUALITY, 75};
Mat mat2 = imdecode(buff, CV_LOAD_IMAGE_COLOR);
imwrite("/home/maya/Desktop/image/jpg075.jpg", mat2, param);
buf.close();
////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////
(5)、發送方
Mat mat1 = imread("/home/maya/Desktop/image/IMG00054.BMP", CV_LOAD_IMAGE_COLOR);
vector<int> param = {CV_IMWRITE_JPEG_QUALITY, 75};
vector<uchar> buf1;
imencode(".jpg", mat1, buf1, param);
int aa = buf1.size();
QByteArray buf11((const char*)buf1.data(), buf1.size());
(6)、發送方
QImage image("/home/maya/Desktop/image/IMG00054.BMP");
QBuffer buf2; buf2.open(QIODevice::ReadWrite);
image.save(&buf2,"jpg", 75); //用於直接將 image 壓縮後 保存在 QByteArray 中
int bb = buf2.size();
QByteArray buf22 = buf2.data();
buf2.close();
QFile file("/home/maya/Desktop/image/b22.jpg");
file.open(QFile::WriteOnly);
file.write(buf22);
file.close();
{
QFile file("/home/maya/Desktop/image/b11.jpg");
file.open(QFile::WriteOnly);
file.write(buf11);
file.close();
}
////////////////////////////////////////////////////////////////////