跳至主要內容
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?

4563博客

全新的繁體中文 WordPress 網站
  • 首頁
  • 问个问题,为什么使用 jszip 打包图片,使用 base64 打包会比使用 blob 打包下来的体积几乎大 6 倍
未分類
23 8 月 2020

问个问题,为什么使用 jszip 打包图片,使用 base64 打包会比使用 blob 打包下来的体积几乎大 6 倍

问个问题,为什么使用 jszip 打包图片,使用 base64 打包会比使用 blob 打包下来的体积几乎大 6 倍

資深大佬 : shentibeitaokong 9

跪求大佬能给点思路,图片转 base64 只会比原来大概大 1/3 呀,我的代码如下 https://github.com/Stuk/jszip/issues/709 跪求大佬 感谢!

大佬有話說 (12)

  • 資深大佬 : stevenhawking

    二进制的数据被 base64 后,字节组合的可能性大大缩减;于是熵增加了,可压缩(重复)的部分变小。

  • 資深大佬 : misaka19000

    @stevenhawking #1 我觉得不会吧,信息所携带的熵是固定的,那么即使转成 base64 之后再压缩应该也有一样的压缩效果才对

  • 資深大佬 : xqdoo00o

    jszip 默认 store 应该是没压缩的,你可以用压缩软件看看到底是啥方式,deflate 还是 store

  • 資深大佬 : KuroNekoFan

    base64 编码本身就会产生冗余吧

  • 資深大佬 : xqdoo00o

    用 canvas 生成 base64 。。。如果图片是 jpg 这种有损压缩格式,用 canvas 画出来肯定变大。
    直接 filereader 读就行了。

  • 資深大佬 : codehz

    @misaka19000 #2 这里的问题是不是单纯的转换,而是重编码了。。它先把图片画到 canvas 里,然后用 canvas.toDataURL 的方法重新编码成 png,即使原图也是 png 格式,这样重新编码的方法造成编码参数的不一致也有可能造成体积增加。。。

  • 資深大佬 : JerryCha

    你用来测试的图片是什么格式什么编码的。
    假若你输入的是 JPG,你用 canvas 画,再从 canvas 读出来,这个操作最终获得的是原始的 RGBA 数据,不是经过 JPEG 编码的图像压缩数据。
    你直接二进制读,原封不动的送去压缩,是对压缩过的数据再压缩一遍。
    网上搜到的文章,供参考 [图片之旅 – 了解各种图形格式的编码方式]( https://juejin.im/entry/6844903439525216270)

  • 資深大佬 : qwerthhusn

    这个简单,找个图片,看一下原大小,再 base64 解码一下比对

  • 資深大佬 : okaku

    意义不明 如果不对图片做其他处理没有必要 绘制到 canvas 上。绘制再压缩成 png 格式多了透明通道是比 jpg 原图大。

  • 主 資深大佬 : shentibeitaokong

    @xqdoo00o 感谢大佬, 非常感谢 !我尝试了 filereader 的 base64 确实体积和之前一摸一样,但是这不太适合我的场景,毕竟 filereader 先要把 url 转成 blob 再读取解析返回 bas64

  • 主 資深大佬 : shentibeitaokong

    @okaku 是的,没有考虑这一层次,png 与 jpg,感谢

  • 主 資深大佬 : shentibeitaokong

    @codehz
    @JerryCha 感谢两位大佬,确实是 png 格式造成的体积过大,如果将其变成 image/jpeg,其体积只会比原来大大概 1/6

文章導覽

上一篇文章
下一篇文章

AD

其他操作

  • 登入
  • 訂閱網站內容的資訊提供
  • 訂閱留言的資訊提供
  • WordPress.org 台灣繁體中文

51la

4563博客

全新的繁體中文 WordPress 網站
返回頂端
本站採用 WordPress 建置 | 佈景主題採用 GretaThemes 所設計的 Memory
4563博客
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?
在這裡新增小工具