在研究图片头文件的时候有一行代码看不懂,望大神指点

chebaodaren 发布于 2016/01/07 16:15
阅读 338
收藏 0

最近一直在找获取网络图片的size的方式,最后得出两个结论:

1 使用分线程下载下来,然后获得图片的size

2 使用网络请求图片的头文件,然后从头文件中找到图片大小的信息

第一种方法需要主线程分线程切换,刷表老是出问题,先放着不管

重点是想搞一下第二个方法:

在网上找到了一个博客:http://cxjwin.github.io/2013/11/05/preview_image_size/

大神写的很不错,也能得出图片大小,但是其中一句代码看不懂


这里的data是<00000400 000002ad>,只有八位,前四位是width,后四位是height


在打断点的那一行,在网上问了,<< 是左移运算符

但是我不清楚为什么要这样就算出了width值,不知道为什么要使用左移运算符

总之这一句加上上面的四行代码都不理解啊,求大神帮帮忙,我想自己写一个计算jpeg格式的

这里卧虎藏龙,肯定有大神!


加载中
0
Narky
Narky

举个栗子

每个字节8bit,用16进制表示成两位数字

00 00 04 00 这个是 16进制的数

作者获得头信息字节把他两个两个切开,变成4个16进制的数,所以在计算的时候需要各归其位,从高到底排列

然后记住位移操作是在二进制的层面进行的

最右边不需要动,所以位移为0*8=0,其实这里w4就等于w4<<0

然后倒数第二个数,需要往左移动一个字节,位移1*8=8

以此类推分别移动2*8=16,3*8=24

就是这样,拼起来一个16进制数然后转成int而已

0
Broly
Broly

通过getBytes获取到PNG头信息的是字节 那句话就是把字节转换成十进制

0
如比如比
如比如比
就是个NSData转int的问题,考虑了小端大端而已。
返回顶部
顶部