V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
NicholasNC
V2EX  ›  问与答

横图和竖图的压缩比

  •  
  •   NicholasNC · 2017-01-11 17:40:19 +08:00 · 1853 次点击
    这是一个创建于 2654 天前的主题,其中的信息可能已经有所发展或是发生改变。

    很久之前看过一道面试题,内容大概是问:

    横图的压缩比高还是竖图的压缩比高?

    这与图片的格式或者压缩算法有关吗?

    今天突然想起这个问题,跪求大神解答。

    Thanks~

    9 条回复    2017-01-12 15:51:23 +08:00
    Yourdaye
        1
    Yourdaye  
       2017-01-11 17:49:41 +08:00
    这个问题很有意思,我作为外行来回答:

    为了回答这个问题,我用 PS 新建了一张 100*200 像素,和一张 200*100 像素的图片

    在所有参数都相同的情况下

    当我保存为 JPG 格式时,横图和竖图的大小都一样,都是 1.33K

    当我保存为 PNG24 格式时,竖图的大小为: 1.16K ,横图的大小为 1.08K

    所以:
    1 、横图的压缩比更高
    2 、与图片格式有关

    具体是什么原因,请内行来回答
    jininij
        2
    jininij  
       2017-01-11 17:58:23 +08:00 via Android
    我猜和 png 的隔行交错有关。
    loading
        3
    loading  
       2017-01-11 18:00:55 +08:00
    bmp 应该是一样的。
    akira
        4
    akira  
       2017-01-11 18:07:59 +08:00
    猜测依赖于压缩算法。
    如果某算法是逐行处理 并且会把原始数据填充至特定长度的话,那么长度少的就有很大可能会比 长度长的获得更好的压缩结果
    why1
        5
    why1  
       2017-01-11 19:32:01 +08:00 via Android
    在显示器上显示面积有区别吗 @Yourdaye
    nfroot
        6
    nfroot  
       2017-01-12 01:57:15 +08:00
    真的某些格式是有区别的,很早以前就看过分析了,大概和存储数据的方式有关系(废话)。

    但是如果不是 CSS 定位用的背景图片(集合),就没什么意义,毕竟你的图片不可能仅仅为了存储就去改变它的长宽比。
    NicholasNC
        7
    NicholasNC  
    OP
       2017-01-12 08:06:21 +08:00
    @nfroot 确实是为了 CSS 定位用的背景图片(雪碧图)

    昨天弄雪碧图的是否突然想起这个问题——是将雪碧图横向摆放好呢,还是竖向摆放好。

    @akira 这个好像是 压缩算法有关,印象中, png 和 gif 的压缩算法是 “水平压缩” (好像是说水平压缩的话,横图的压缩比更高,只是印象中这样记得,具体是不是还待考证)
    Yourdaye
        8
    Yourdaye  
       2017-01-12 09:02:56 +08:00
    @why1 肉眼看不出来啊
    akira
        9
    akira  
       2017-01-12 15:51:23 +08:00
    @NicholasNC 稍微看了下 png 使用的算法,结论应该是 不能确认
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   1523 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 17:07 · PVG 01:07 · LAX 10:07 · JFK 13:07
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.