无法从任意QByteArray构造QString.您需要对字节数组进行编码,使其可以首先转换为字符串.从C语义的角度来看,QString可以从QByteArray构造出来,这有点误导.它是否真的可构建取决于QByteArray中的内容.

QByteArray :: toBase64和fromBase64是这样做的一种方式.

由于您希望保存像素图而不会丢失其内容,因此不应将其保存为有损格式,如JPG.请改用PNG.如果您在执行完整的json-> pixmap-> json电路时没有重复加载和存储相同的像素图,则仅使用JPG.

还有另一个问题:对于要存储或加载自身的pixmap,它需要在内部转换为/从QImage转换.这涉及潜在的颜色格式转换.此类转换可能会丢失数据.您必须小心确保以相同的格式进行任何往返.

理想情况下,您应该使用QImage而不是QPixmap.在现代的Qt中,无论如何,QPixmap只是QImage的一个薄包装器.

// https://github.com/KubaO/stackoverflown/tree/master/questions/pixmap-to-json-32376119

#include

QJsonValue jsonValFromPixmap(const QPixmap &p) {

QBuffer buffer;

buffer.open(QIODevice::WriteOnly);

p.save(&buffer,"PNG");

auto const encoded = buffer.data().toBase64();

return {QLatin1String(encoded)};

}

QPixmap pixmapFrom(const QJsonValue &val) {

auto const encoded = val.toString().toLatin1();

QPixmap p;

p.loadFromData(QByteArray::fromBase64(encoded),"PNG");

return p;

}

int main(int argc,char **argv) {

QGuiApplication app{argc,argv};

QImage img{32,32,QImage::Format_RGB32};

img.fill(Qt::red);

auto pix = QPixmap::fromImage(img);

auto val = jsonValFromPixmap(pix);

auto pix2 = pixmapFrom(val);

auto img2 = pix2.toImage();

Q_ASSERT(img == img2);

}

json qbytearray 串 转_如何通过QByteArray在JSON中存储QPixmap?相关推荐

  1. json 取值判断_【收藏级】.NETCore3.1中的Json互操作解读

    本文将会全面介绍System.Text.Json 和 Newtonsoft.Json 的相同和异同之处,方便需要的同学做迁移使用,对未来,我们保持期待. 文档比较 几个重要的对象 在 System.T ...

  2. plex 乱码_如何在Plex Media Server中存储和查看照片集

    plex 乱码 Plex Media Server isn't just a great solution for organizing your movies and TV shows: it's ...

  3. 把json对象串转换成map对象

    2019独角兽企业重金招聘Python工程师标准>>> /**    * nc只支持简单的   * 把json对象串转换成map对象    * @param jsonObjStr e ...

  4. 数组转json去除首尾引号_诞生于JavaScript,json的前世今生

    诞生于JavaScript,json的前世今生 json含义 在开始之前,问个问题,什么是json? a:我猜它应该是某一门高深的技术(语重心长) b:json这个词为啥谷歌翻译?是啥新词语嘛?是不是 ...

  5. 解析JSON字串的方法有eval,json_parse,JSON.parse

    解析JSON字串的方法有 (1)var vjson = eval(jsonstr); 缺点:不安全,有可能jsonstr中有恶意脚本,那就麻烦了. (2)var vjson = json_parse( ...

  6. python爬取酷狗音乐json数据为空_【Python3爬虫】下载酷狗音乐上的歌曲

    经过测试,可以下载要付费下载的歌曲(n_n) 准备工作:python3.5+pycharm 使用到的库:requests,re,json 步骤: 打开酷狗音乐的官网,输入想要搜索的歌曲(例如<天 ...

  7. ruby json转化成对象_系统架构迁移实例:从Ruby到Rust

    前几年随着RoR(Ruby on Rails)框架的流行,很多初创企业选择Ruby和Rails作为基础开发框架,构建和快速迭代了其业务系统.但是随着业务规模的不断壮大,性能问题成了一个突出的问题,所以 ...

  8. flask返回json数据到前端_小白学Flask第六天| abort函数、自定义错误方法、视图函数的返回值...

    点击蓝色字关注我们! 一个正在努力变强的公众号 本文内容: 1. abort函数的使用 2. 自定义错误处理方法 3. 设置响应信息的方法 4. 返回json数据的方法 abort函数的使用 abor ...

  9. quicktype游戏java程序_使用QuickType工具从json自动生成类型声明代码

    一.QuickType 工具功能简介 QuickType 是一款可以根据 json 文本生成指定语言(如 Type Script,C++,,Java,C#,Go 等)类型声明代码的工具. 例如我们在写 ...

最新文章

  1. phpinfo 信息利用
  2. C语言编译全过程剖析
  3. c#在WinForm中重写ProgressBar控件(带%的显示)
  4. html5 自定义 datepicker,如何使用 React 构建自定义日期选择器(3)
  5. 帝国CMS7.2阿里大于云短信插件(UTF-8)
  6. 音视频开发(22)---基于RTMP推送实时AAC+H264流(三)
  7. Chrome 更新导致部分 macOS 的文件系统损坏,无法重启
  8. cept源代码目录结构详解_知识树(转)
  9. Java高级面试题!docker启动
  10. carbon 一天的开始 结束_来自一线:银行柜员的一天
  11. GridView固定表头
  12. 关于Google神牛Jeff Dean的笑话,非程序员勿入
  13. DevC++的一些使用技巧
  14. 如何成为一名汽车软件工程师?
  15. 电脑打开应用程序提示配置系统未能初始化--解决方案
  16. 怎么让自媒体文章原创度变高?原创度达到多少才算合格?
  17. 4种基站相关概念——宏基站、微基站、皮基站、飞基站
  18. 路由守卫 AJAX,vue路由传参与路由守卫
  19. 2021-10-07 浊音,清音,爆破音频谱分析
  20. 英语对程序员有多重要?

热门文章

  1. 万事开头难!最新MyBatis程序配置教程(IDEA版)
  2. CUDA上的量化深度学习模型的自动化优化
  3. 摄像头标定GML Camera Calibration
  4. 数字汽车钥匙的安全性增强技术
  5. Linux操作系统下文件作用
  6. Ajax简单的请求数据以表格的形式渲染到页面
  7. 微信小程序填坑之路(三):布局适配方案(rpx、px、vw、vh)
  8. 微信第三方平台开发 - 常见问题汇总
  9. 早上突然看明白 shader和材质球的关系
  10. IntelliJ IDEA 的Project structure说明