像、点、开发中使用的宽度、image压缩体积、逻辑分辨率、设备分辨率、point、pixel

引子:

- (void)imagePickerController:(TZImagePickerController *)picker
       didFinishPickingPhotos:(NSArray<UIImage *> *)photos
                 sourceAssets:(NSArray *)assets
        isSelectOriginalPhoto:(BOOL)isSelectOriginalPhoto
{
  
}

该方法中photos存放的是压缩好的图片(以828为宽度等比例缩放,如果宽度小于828则不缩放)
要想获得原图片从assets中获取、
像微信就是以1280为宽度来等比例压缩的、具体看文章:https://blog.csdn.net/jaycee110905/article/details/50600566

微信规则
a,图片宽或者高均小于等于1280时图片尺寸保持不变,但仍然经过图片压缩处理,得到小文件的同尺寸图片
b,宽或者高大于1280,但是图片宽度高度比小于等于2,则将图片宽或者高取大的等比压缩至1280
c,宽或者高大于1280,但是图片宽高比大于2时,并且宽以及高均大于1280,则宽或者高取小的等比压缩至1280
d,宽或者高大于1280,但是图片宽高比大于2时,并且宽或者高其中一个小于1280,则压缩至同尺寸的小文件图片

比如:苹果4的3.5英寸指的是显示屏对角线的长度(用尺子量的出来的长度)
它常说的320 * 480指的是逻辑分辨率即point、我们所有代码中使用的宽高也都是以逻辑分辨率为单位
它使用的@2x图片是指一个point里面要放(2 * 2)个像素、像素即是设备分辨率(pixel)、所有的图片是以像素单位通过@1x、@2x、@3x放在point里
这里的@1x、@2x中的1,2就是Scale,Scale*point = pixel;

PPI(Pixels Per Inch像素密度):表示像素数目 / 手机显示屏对角线的长度(英寸为单位)
DPI(Dots Per Inch):每英寸点数

图片压缩:
“压”:指文件体积进行变小,但像素数不变,长和宽不变,质量减少,文件体积也就会减少。
“缩”:指图片的尺寸变小,造成像素点数减少,这样文件体积同样会减少。

原始图像体积=水平分辨率垂直分辨率像素深度/8 (单位字节)
比如10241024的24位彩色bmp=10241024*(3*8)/8/1024/1024=3MB

压:

NSData *data = UIImageJPEGRepresentation(image, compression);//取值0.0-1.0
UIImage *resultImage = [UIImage imageWithData:data];

缩:

UIGraphicsBeginImageContext(size);
[image drawInRect:CGRectMake(0, 0, size.width, size.height)];
resultImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
发布了40 篇原创文章 · 获赞 10 · 访问量 3万+

猜你喜欢

转载自blog.csdn.net/ai_pple/article/details/87609150