有些时候我们会有这样的一些需求:需要获得一张图片的具体尺寸和所占的存储空间,这张图片可能来自网络、本地,也可能是在内存当中的 UIImage 对象。
基本思路:图片文件的本质是一些二进制数据,他们按照一定的规则存储在磁盘或内存当中,我们只需要在相应的位置取出我们需要的数据即可。不同格式的图片存储方式不同,数据所在的位置也不同,所幸的是前人已经帮我们做好了封装,我们只需要调用相关 API 即可。针对图片文件的大小,我们还可以通过计算数据的长度的方式来计算。
网络图片和本地图片
对于计算机系统而言,本地和网络都是计算机系统外部某个位置,所以这两种存储方式的方法是一致的。
图片的尺寸
1 | //需导入头文件#import <ImageIO/ImageIO.h> |
图片大小
1 | //需导入头文件#import <ImageIO/ImageIO.h> |
内存当中的 UIImage 对象
图片尺寸
1 | UIImage *tempImage = [UIImage imageNamed:@"paperPlane"]; |
图片大小
1 | UIImage *tempImage = [UIImage imageNamed:@"paperPlane"]; |
其他
网络和本地图片也可以通过 IO 读入计算,但需要拿到图片的全部数据,不推荐。