最近一直在找获取网络图片的size的方式,最后得出两个结论:
1 使用分线程下载下来,然后获得图片的size
2 使用网络请求图片的头文件,然后从头文件中找到图片大小的信息
第一种方法需要主线程分线程切换,刷表老是出问题,先放着不管
重点是想搞一下第二个方法:
在网上找到了一个博客:http://cxjwin.github.io/2013/11/05/preview_image_size/
大神写的很不错,也能得出图片大小,但是其中一句代码看不懂
这里的data是<00000400 000002ad>,只有八位,前四位是width,后四位是height
在打断点的那一行,在网上问了,<< 是左移运算符
但是我不清楚为什么要这样就算出了width值,不知道为什么要使用左移运算符
总之这一句加上上面的四行代码都不理解啊,求大神帮帮忙,我想自己写一个计算jpeg格式的
这里卧虎藏龙,肯定有大神!
举个栗子
每个字节8bit,用16进制表示成两位数字
00 00 04 00 这个是 16进制的数
作者获得头信息字节把他两个两个切开,变成4个16进制的数,所以在计算的时候需要各归其位,从高到底排列
然后记住位移操作是在二进制的层面进行的
最右边不需要动,所以位移为0*8=0,其实这里w4就等于w4<<0
然后倒数第二个数,需要往左移动一个字节,位移1*8=8
以此类推分别移动28=16,38=24
就是这样,拼起来一个16进制数然后转成int而已
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。