资讯

精准传达 • 有效沟通

从品牌网站建设到网络营销策划,从策略到执行的一站式服务

ios开发图片压缩,ios手机图片压缩

iOS-图片压缩和裁剪

项目工程里面用到了图片压缩,这边做了个笔记整理了一下。

创新互联自2013年起,是专业互联网技术服务公司,拥有项目成都网站设计、成都做网站网站策划,项目实施与项目整合能力。我们以让每一个梦想脱颖而出为使命,1280元靖州做网站,已为上家服务,为靖州各地企业和个人服务,联系电话:028-86922220

压缩:图片文件的体积变小,长宽尺寸不变,质量可能下降。

裁剪:文件尺寸变小,长宽尺寸变小,文件体积大小会变小。

在iOS中图片压缩使用到两个关键方法: UIImageJPEGRepresentation 和 UIImagePNGRepresentation 使用方式如下。

下面我们用图片测试一下两个方法的差异。就使用的本文上面的那张傍晚iPhone拍摄的图片,具体参数如图:

使用 UIImagePNGRepresentation(image) 返回的数据量大小为 1,299,138 字节(磁盘上的1.3 MB) 。

使用 UIImageJPEGRepresentation(image, 1.0) 返回的数据量大小为 183,531 字节(磁盘上的184 KB 。

可以看到 UIImagePNGRepresentation(UIImage \*image) 要比 UIImageJPEGRepresentation(UIImage* image, 1.0) 返回的图片数据量大很多。

使用 UIImageJPEGRepresentation 可以大幅度降低图片的数据量,比如刚才拍摄的那张图片,通过该方法压缩之后,数据大小仅为 184 KB 。 更改压缩系数为0.5再读取数据时,返回的数据大小只有 111 KB 。图片大小压缩了,但是清晰度并没有像差多少,质量也没有明显的降低。

所以在读取图片数据的时候,建议优先使用 UIImageJPEGRepresentation ,根据实际业务需求,设置压缩系数。

iOS开发图片压缩的两种方式2019-01-18

工作中遇到需要将图片压缩之后上传的需求。经过多方查询资料,目前总结出来两种方式总结一下备用。

UIImageJPEGRepresentation(image, compression)

这个方法可以将iPhone拍摄的照片压缩到几百Kb的极限值,到极限值之后不管compression这个参数多小,该函数返回的数据大小都不会再改变。也就是说这个方法的压缩是有最小值的,得到的是jpg格式。

另外有一个方法UIImagePNGRepresentation(#UIImage * _Nonnull image#)这个方法得到的数据会比之前那个方法得到的数据占用空间更大。

为了达到压缩的目的,这种方法是有损的,就是会降低图片质量。

这种方法的到的图片,newSize越小质量越差,但是得到的图片占用内存越小。设置多大的newSize自己斟酌决定。

综合一下自己平常在开发中常用的就是,先使用第一种方法保持精度不变,compression选择0.6或者0.7进行第一次压缩,然后再用第二种方法进行尺寸压缩,得到的就是我们最终想要的图片。

iphone压缩照片最简单的方法

iphone压缩照片最简单的方法如下:

设备:苹果8。

系统:ios13.2.1。

软件:视频图片压缩6.2.1。

1、打开图片压缩软件

首先在iPhone桌面点击下载的图片压缩软件,进入软件页面。

2、选择压缩图片

在软件首页,点击选择“压缩照片”功能,进入照片选择页面。

3、开始压缩

在照片选择页面选择需要压缩的照片,选择完成后点击页面上的“压缩”开始图像压缩操作。

4、选择参数

在弹出的确认框中,根据实际压缩需要调整压缩参数。

5、压缩完成

软件压缩完成后,页面会提示“压缩文件成功”。 这时候就可以根据页面提示查看压缩后的图片了。

iOS 图片显示中遇到的压缩与裁剪问题

我们假设要在截图中的举行图片展示区显示图片,由于原图片的宽高比例与图片显示窗口的宽高比例不一定相同,所以,直接将图片扔进去会改变图片的宽高比例,展示效果不好。

这时你可能想到设置UIImageView的属性 _imageView.contentMode = UIViewContentModeCenter;  设置该属性后,我们会发现图片的宽高比例确实正确了,但是窗口中只显示了图片的一部分,这说明图片整体尺寸没有压缩,按照原图进行显示了。怎样才能达到既缩小图片又不改变原来的宽高比例呢?

方法一:将图片按照原来的宽高比例压缩到与窗口合适的大小,然后在设置了_imageView.contentMode = UIViewContentModeCenter;  这个属性的UIImageView中展示压缩后的图片。

//压缩图片

- (UIImage *)image:(UIImage*)image scaledToSize:(CGSize)newSize

{

// 创建一个图形上下文形象

UIGraphicsBeginImageContext(newSize);

// 告诉旧图片画在这个新的环境,所需的

// 新的尺寸

[image drawInRect:CGRectMake(0,0,newSize.width,newSize.height)];

// 新形象从上下文

UIImage* newImage = UIGraphicsGetImageFromCurrentImageContext();

// 结束上下文

UIGraphicsEndImageContext();

// 返回新形象

return newImage;

}

上面方法的参数newSize是和图片显示窗口差不多大的,结果出现了原图清晰,但压缩后图片不清晰的情况。

方法二:按照窗口宽高比例,将原图横向或者纵向裁剪掉多余的部分,然后不设置UIImageView的contentMode属性,将裁剪后的图片送进去,使其自动适应窗口。

//裁剪图片

- (UIImage *)cutImage:(UIImage*)image

{

//压缩图片

CGSize newSize;

CGImageRef imageRef = nil;

if ((image.size.width / image.size.height) (_headerView.bgImgView.size.width / _headerView.bgImgView.size.height)) {

newSize.width = image.size.width;

newSize.height = image.size.width * _headerView.bgImgView.size.height / _headerView.bgImgView.size.width;

imageRef = CGImageCreateWithImageInRect([image CGImage], CGRectMake(0, fabs(image.size.height - newSize.height) / 2, newSize.width, newSize.height));

} else {

newSize.height = image.size.height;

newSize.width = image.size.height * _headerView.bgImgView.size.width / _headerView.bgImgView.size.height;

imageRef = CGImageCreateWithImageInRect([image CGImage], CGRectMake(fabs(image.size.width - newSize.width) / 2, 0, newSize.width, newSize.height));

}

return [UIImage imageWithCGImage:imageRef];

}

结果表明方法二效果更好。

iOS--图片压缩

我们可以在不减小图片的分辨率(质量可以适当减小)的情况下,显著减小图片的大小

上面方法等价于下面: 压缩图片质量

//将图片压缩到指定比例

等比例压缩

图片的压缩其实是俩概念,

1、是 “压” 文件体积变小,但是像素数不变,长宽尺寸不变,那么质量可能下降,

2、是 “缩” 文件的尺寸变小,也就是像素数减少。长宽尺寸变小,文件体积同样会减小。

这个 UIImageJPEGRepresentation(image, 0.0),是1的功能。

这个 [sourceImage drawInRect:CGRectMake(0,0,targetWidth, targetHeight)] 是2的功能。

所以,这俩你得结合使用来满足需求,不然你一味的用1,导致,图片模糊的不行,但是尺寸还是很大。

我们还可以对图片进行部分截取

//--------------截取部分图片到指定位置-------------------------


本文标题:ios开发图片压缩,ios手机图片压缩
转载来源:http://cdkjz.cn/article/hopjpd.html
多年建站经验

多一份参考,总有益处

联系快上网,免费获得专属《策划方案》及报价

咨询相关问题或预约面谈,可以通过以下方式与我们联系

大客户专线   成都:13518219792   座机:028-86922220