Ole*_*rov 23 cocoa-touch objective-c uikit uiimage ios
在我的应用程序中,我必须将不同格式的图像发送到服务器(它必须是UIImage该类可以读取的所有文件格式)https://developer.apple.com/library/ios/#documentation/uikit/reference/ UIImage_Class /参考/的reference.html
问题是:我不知道何时应该使用这些方法.当然,很明显,对于.png图像我需要使用UIImagePNGRepresentation和.jpg/.jpeg UIImageJPEGRepresentation.但对于其他格式(.tiff,.gif,等)?图像处理只有两种方法,格式也很多.
Rob*_*Rob 50
你说:
当然,对于我需要使用的.png图像
UIImagePNGRepresentation以及.jpg/.jpeg 来说很明显UIImageJPEGRepresentation.
不,情况不一定如此.如果你有一些独创的"数字资产",而不是创建一个UIImage,然后利用这两个功能之一创建NSData,你会上传,你会常常只是加载NSData从原来的资产和绕过往返于UIImage在所有.如果这样做,您不会冒任何转换为a UIImage,然后再返回的数据丢失的风险.
但是还有一些额外的考虑因素:
元数据:
这些UIImageXXXRepresentation函数剥离其元数据的图像.有时候这是一件好事(例如,你不想上传你孩子的照片或昂贵的小工具,包括GPS位置,在那里不满的人可以识别拍摄的位置).在其他情况下,您不希望丢弃元数据(例如,原始镜头的日期,相机等).
您应该明确决定是否要删除元数据.如果没有,请不要通过a往返您的图像UIImage,而是使用原始资产.
图像质量损失和/或文件大小注意事项:
我特别不高兴,UIImageJPEGRepresentation因为它有点压缩.因此,如果使用compressionQuality小于1.0 的值,则可能会丢失一些图像质量(对于接近1.0的值,适度的质量损失,具有较低compressionQuality值的更显着的质量损失).如果你使用compressionQuality1.0,你可以减少大部分JPEG图像质量损失,但结果NSData通常会比原始资产更大(至少如果原始版本是压缩的JPEG或PNG),导致上传速度变慢.
UIImagePNGRepresentation 不会引入基于压缩的数据丢失,但根据图像,您仍可能丢失数据(例如,如果原始文件是48位TIFF或使用sRGB以外的颜色空间).
这是一个问题,您在上传过程中是否可以使用某些图像质量丢失和/或更大的文件大小.
图片尺寸:
有时您不想上传全分辨率图像.例如,您可能正在使用希望每面不超过800px的图像的Web服务.或者,如果您正在上传缩略图,他们可能想要更小的东西(例如32px x 32px).通过调整图像大小,您可以使上传更小,从而更快(尽管质量明显下降).但是如果使用图像大小调整算法,则使用这些UIImageXXXRepresentation函数创建PNG或JPEG 将非常常见.
简而言之,如果我试图最小化数据/质量损失,我会上传原始资产,如果它是服务器接受的格式,并且我使用UIImagePNGRepresentation(或UIImageJPGRepresentation质量设置为1.0)如果原始资产是不是服务器接受的格式.但是,使用这些UIImageXXXRepresentation功能的选择是您的业务需求和服务器接受的问题.
| 归档时间: |
|
| 查看次数: |
25693 次 |
| 最近记录: |