2012-11-14 50 views
3

我需要通过互联网发送UIImage,但到目前为止我一直有一些问题。如何通过网络传输小UIImages,质量损失最小?

我目前采取UIImage,使它成为第16维,将其转换为NSData,然后使用NSData + base64创建一个NSString。然后,我将这作为JSON请求的一部分传输到服务器。

大多数情况下,这个功能完美无缺。

但是,文件大小很大。在蜂窝连接上,图像可能需要大约10秒钟才能加载。

如何通过网络传输UIImage,使其很小并保持质量?即使当我将它设置为以前的像素数的第16个时,照片也可以是1.5MB。我想得到300KB左右。

使用zip或gzip压缩它似乎只会导致忽略(< .1MB)节省。

感谢, 罗伯特

+0

发送原始数据而不是base64编码的字符串。这将占用更少的带宽。 – rmaddy

回答

2

我建议把它作为一个JPEG或一些压缩PNG,使用方法类似

 UIImageJPEGRepresentation(UIImage *image, CGFloat compressionQuality) 

然后发布NSData对象您从获得。你应该可以通过使用compressionQuality变量来找到一个很好的ssize /质量折衷。

+0

Jpeg将会有很大的帮助。 – Dancreek

1

你没有说你如何将图像转换为数据。你提到“照片”。如果你的图片是照片,你应该使用UIImageJPEGRepresentation,而不是UIImagePNGRepresentation。您必须使用compressionQuality参数来查找能够平衡数据大小和图像质量的压缩级别。