最近遇到了一些将图片转为Base64格式,再转回图片的问题,特此记录一下。
图片转为Base64格式:
/**
* @brief 将图片转为Base64格式
* @param t_picpath 图片路径
* @return 返回Base64图片
*
**/
QByteArray MyJson::ConvertImage(QString t_picpath)
{
QByteArray t_dataArea=QByteArray();
QFile file(t_picpath);
if( file.open(QIODevice::ReadOnly))
{
t_dataArea.append(file.readAll() );
}
QByteArray t_data=t_dataArea.toBase64();
return t_data;
}
在转成Base64位格式后,在Json应用中往往又需要将其转为QString类型转成Json格式,接收端解析Json后出现的是QString类型,这时再其转为QByteArry,代码如下:
假设解析后的数据为:QString t_data;
转为QPixmap显示在UI:
QByteArray t_array = QByteArray::fromBase64(t_data.toUtf8());
QPixmap t_pix;
t_pix.loadFromData(t_array);
ui->ShowPic->setPixmap(t_pix);
转为图片文件:
QFile t_file("F:/1.jpg");//要保存的图片的路径名称 if(!t_file.open(QIODevice::WriteOnly)) { qDebug()<<"打开失败"; } QByteArray t_pic = QByteArray::fromBase64(t_data.toUtf8()); t_file.write(t_pic);
希望对大家有所帮助,有问题欢迎留言。