不同平台图片显示不一致的两个问题

旋转方向不一致(jpeg)

 

可能你会在上传JPEG格式的图片时候发现,图片上传前是横的图片但是在上传后展示的界面却是一张竖着的图片,也就是说图片已经进行了旋转处理。那是什么因素来决定这个旋转的方向和度数呢?以下我们将介绍这一特性。

原来在JPEG格式文件中有一标志位(orientation)标志图片的需要进行旋转方向和角度。每个值对应的旋转方向和度数如下表:

value

row

column

0

没有定义

1

顶部

左侧

2

顶部

右侧

3

底部

右侧

4

底部

左侧

5

左侧

顶部

6

右侧

顶部

7

右侧

底部

8

左侧

底部

我们可以这样理解把图片的左上角定义为(0,0),那么不同的orientation值就表示把(0,0)这个起始点的位置放于何处。下图为效果图:

原图为:

1

orientation各值对应的效果图如下:

1                   2                     3                     4

1 2 3  4

5                   6                     7                     8

5  6  5   8

 

更为直显示,我们使用字母F来显示orientation 各个值的旋转方向:

888888         888888            88     88
88                 88            88     88    
8888             8888          8888     8888
88                 88            88     88
88                 88        888888     888888
8888888888    88                    88  8888888888
88  88        88  88            88  88      88  88
88            8888888888    8888888888          88

 

生成:该字段是在图片生成的时候就已经存在的,如果是拍摄所得的图片,该值就与硬件相关,例如手机三星9100拍摄的图片该值大部分为6;

读取: 不同平台的图片阅读器对该值的处理方式不统一,不同的图片播放器对该字段处理不一样,导致同一张图片在不同平台显示不一致。

下图为orientation 值为6在ubuntu和windows环境下图片阅读器的展示:

windows:

windows

Ubuntu:

解决方案 :读取图片orientation 的值,根据不同的值进行旋转对应的度数即刻。

 

旋转方向不一致(gif)

依旧是一张一样的图片,在不同的图片播放器打开则显示尺寸不一样:

如下图

在windows xp环境下的图片属性如下图:

那么在win7环境下查看图片属性则为

可以直观的看到图片尺寸在windows XP环境下是58×54,而在win7环境下是54×54,那到底是什么原因导致这个尺寸的显示不一致呢?

对图片的相关存储数据进行分析,可以看到有那么一组数据:

GIF 54×54 58×54+2+0

原来在gif格式中会有一个“画框”概念的值(逻辑屏幕宽高),因为gif格式图片是支持多帧图片拼凑成动态格式,多帧图片的尺寸可能存在有不一致的问题,那么就先限定所有图片都在这个“画框”里出现。那么这租数据可以拆分为:

那么前面54×54就是表明这个图片的实际尺寸是多少(图像宽高),这就是在win7环境下图片显示的尺寸,而后面有58×54+2+0,这一组数据前的58×54就刚好是在windowsXP环境下图片显示的尺寸,也就是之前所讲的“画框”,而+2+0这个是表示图片在“画框”中的偏移量(离左顶点的距离)。

解决方案:如果该gif为单帧图片,那么可以重设该gif图片的page geometry即刻。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值