当前位置:首页 » 文件管理 » ios图片压缩上传

ios图片压缩上传

发布时间: 2023-01-05 04:37:35

① iOS--图片压缩

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

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

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

等比例压缩

图片的压缩其实是俩概念,
1、是 “压” 文件体积变小,但是像素数不变,长宽尺寸不变,那么质量可能下降,
2、是 “缩” 文件的尺寸变小,也就是像素数减少。长宽尺寸变小,文件体积同样会减小。
这个 UIImageJPEGRepresentation(image, 0.0),是1的功能。
这个 [sourceImage drawInRect:CGRectMake(0,0,targetWidth, targetHeight)] 是2的功能。
所以,这俩你得结合使用来满足需求,不然你一味的用1,导致,图片模糊的不行,但是尺寸还是很大。

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

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

② iOS文件上传

文件上传的步骤

有时候项目需要要一次上传多张图片,可以将图片压缩成一个zip包,然后上传这样的方式来处理。文件压缩和解压工具 SSZipArchive

③ iOS 开发中的图片压缩

在项目中经常遇到要上传图片,如果直接上传,那么会上传比较大的图片,导致费流量,刷新时加载图片时间过长,手机内存占用率高等问题。

一、先来介绍下概念:

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

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

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

二、解决方法(以上传头像为例),先缩再压:

2.1 矫正图片方向(照片是有方向的,避免出现“倒立”的情况)

- (UIImage*)fixOrientation:(UIImage*)aImage {

// No-op if the orientation is already correct

if(aImage.imageOrientation==UIImageOrientationUp)

returnaImage;

// We need to calculate the proper transformation to make the image upright.

// We do it in 2 steps: Rotate if Left/Right/Down, and then flip if Mirrored.

CGAffineTransformtransform =CGAffineTransformIdentity;

switch(aImage.imageOrientation) {

caseUIImageOrientationDown:

:

transform =CGAffineTransformTranslate(transform, aImage.size.width, aImage.size.height);

transform =CGAffineTransformRotate(transform,M_PI);

break;

caseUIImageOrientationLeft:

:

transform =CGAffineTransformTranslate(transform, aImage.size.width,0);

transform =CGAffineTransformRotate(transform,M_PI_2);

break;

caseUIImageOrientationRight:

:

transform =CGAffineTransformTranslate(transform,0, aImage.size.height);

transform =CGAffineTransformRotate(transform, -M_PI_2);

break;

default:

break;

}

switch(aImage.imageOrientation) {

:

:

transform =CGAffineTransformTranslate(transform, aImage.size.width,0);

transform =CGAffineTransformScale(transform, -1,1);

break;

:

:

transform =CGAffineTransformTranslate(transform, aImage.size.height,0);

transform =CGAffineTransformScale(transform, -1,1);

break;

default:

break;

}

// Now we draw the underlying CGImage into a new context, applying the transform

// calculated above.

CGContextRefctx =CGBitmapContextCreate(NULL, aImage.size.width, aImage.size.height,

CGImageGetBitsPerComponent(aImage.CGImage),0,

CGImageGetColorSpace(aImage.CGImage),

CGImageGetBitmapInfo(aImage.CGImage));

CGContextConcatCTM(ctx, transform);

switch(aImage.imageOrientation) {

caseUIImageOrientationLeft:

:

caseUIImageOrientationRight:

:

CGContextDrawImage(ctx,CGRectMake(0,0,aImage.size.height,aImage.size.width), aImage.CGImage);

break;

default:

CGContextDrawImage(ctx,CGRectMake(0,0,aImage.size.width,aImage.size.height), aImage.CGImage);

break;

}

CGImageRef cgimg =CGBitmapContextCreateImage(ctx);

UIImage *img = [UIImageimageWithCGImage:cgimg];

CGContextRelease(ctx);

CGImageRelease(cgimg);

return img;

}

2.2 拿到上面矫正过的图片,缩小图片尺寸,调用下面方法传入newSize,如(200,200):

+ (UIImage*)imageWithImageSimple:(UIImage*)image scaledToSize:(CGSize)newSize

{

UIGraphicsBeginImageContext(newSize);

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

UIImage* newImage =();

UIGraphicsEndImageContext();

return newImage;

}

2.3 将2.2的图片再压,这个方法可以重复压

//调整大小

NSData *imageData =UIImageJPEGRepresentation(newImage,rate);

NSUIntegersizeOrigin = [image Datalength];//多少KB

NSUIntegersizeOriginKB = sizeOrigin /1024;//多少KB

2.4 上传头像

调用后台接口,把imageData二进制数据上传即可

总结:对图片压缩处理时,在保证图片清晰度变化不大时,减小图片文件大小。方法2.2中的newSize 和 2.3中的rate要以实际效果来设置,我在自己项目中上传的头像最终尺寸是200*200像素,大小为4KB左右。

④ 手机怎么打包图片

安卓和iOS系统的操作方法不同,安卓可以使用手机上自带的文件管理器完成压缩打包发送图片的操作;iOS系统需要先把图片发送到电脑上,再通过电脑上的压缩软件压缩打包发送图片压缩包。以下是详细介绍。
1、如果您使用的是安卓手机可以直接使用文件管理器打开图片的文件夹,将需要发送的文件多选选中后复制到一个新的文件夹。长按该文件夹点击下方选项中的【更多】,在弹出的菜单中选择【压缩并发送】。
2、等待压缩完成之后就可以在分享列表中选择使用微信、QQ、邮箱或是蓝牙等方式分享。
3、如果您使用的是苹果的iPhone手机,需要借助电脑上面的压缩软件。通过QQ或者微信将照片从手机传输到电脑上,另存为一个新建的文件夹路径。
4、找到该文件夹右键打开菜单,选择【添加XX.zip】,XX为您的文件夹名称。等待压缩成功之后,在同一个路径就可以看到压缩包,把压缩包发给别人即可。

⑤ iOS微信聊天,朋友圈图片压缩算法

图片作为App中重要的一个元素,非常具有表现力,图片既要让用户能看清楚,又能让发布图片的用户能快速的上传。所以开发者要对图片进行裁切和质量压缩。但是裁切尺寸质量压缩比设置成多少却很难控制好,如果设置不当会导致图片显示效果很差。

微信是一个很好的参照物,被大家广为使用并接受。这个扩展就是通过发送微信朋友圈和聊天会话发送了大量图片,对比原图与微信压缩后的图片逆向推算出来的压缩算法。

经过大量的测试,微信的图片压缩质量值 ≈0.5

⑥ iOS-图片压缩和裁剪

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

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

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

在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进行第一次压缩,然后再用第二种方法进行尺寸压缩,得到的就是我们最终想要的图片。

⑧ iOS中图片压缩

1.对图片进行压缩,利用iOS的API提供的函数进行压缩:

2.根据image重新绘制一张新的图片出来:

⑨ iOS中图片压缩方法

在实际开发中,可能会遇到从手机相册中选择图片的需求,选择图片这个过程是一个消耗性能的过程,取决于手机图片的大小,如果手机像素非常高,图片的尺寸非常大,这个时候就会变得很消耗性能;
以上两种方法虽然都可能达到压缩图片的需求,但是可能会照成图片的失真;
下面提供另一种方法:根据图片从新绘制一张出来,不会失真,只是改变图片大小,比如之前是5000 5000的分辨率,这个时候你压缩后可能就只有500 500,不会失真,只会改变大小,建议使用;

热点内容
编译语句 发布:2025-08-27 11:53:33 浏览:4
新款本田飞度潮越版有哪些配置 发布:2025-08-27 11:36:57 浏览:692
鼠标宏脚本吃鸡 发布:2025-08-27 11:33:49 浏览:963
农行u盾密码有多少次机会 发布:2025-08-27 11:17:42 浏览:919
影视大全离线缓存 发布:2025-08-27 11:11:56 浏览:30
云服务器开游戏 发布:2025-08-27 10:41:37 浏览:442
ftp后台登陆 发布:2025-08-27 10:39:00 浏览:776
java武汉培训 发布:2025-08-27 10:33:06 浏览:644
什么是圆点密码 发布:2025-08-27 10:31:48 浏览:546
php培训机构那个比较好 发布:2025-08-27 10:24:13 浏览:915