我需要通过互联网发送UIImage,但到目前为止我遇到了一些问题。
我目前使用UIImage,使其成为第16个维度,将其转换为NSData,然后使用NSData + base64创建NSString。然后,我将此作为JSON请求的一部分传输到服务器。
大部分时间,这都很完美。
但是,文件大小很大。在蜂窝连接上,图像可能需要约10秒才能加载。
如何通过网络传输UIImage,以便它很小并保持质量?即使我将它设为前一个像素数的16,照片也可以是1.5MB。我想得到大约300KB。
使用zip或gzip压缩它似乎只会导致可忽略不计(<.1MB)的节省。
谢谢, 罗伯特
答案 0 :(得分:2)
我建议将其存储为带有一些压缩的JPEG或PNG,使用类似
的方法 UIImageJPEGRepresentation(UIImage *image, CGFloat compressionQuality)
然后发布你从中得到的NSData对象。您应该能够通过使用compressionQuality变量找到一个好的ssize / quality权衡。
答案 1 :(得分:1)
您没有说明如何将图像转换为数据。你提到“照片”。如果您的图片是照片,则应使用UIImageJPEGRepresentation
,而不是UIImagePNGRepresentation
。您必须使用compressionQuality
参数来查找平衡数据大小和图像质量的压缩级别。