检测UIImage是PNG还是JPEG?

Uwe*_*eim 18 iphone cocoa-touch uiimage xamarin.ios ios

目前通过MonoTouch进行iPhone开发的第一步,我正在玩UIImage我从照片库中读取的内容.

我想要实现的是获取图像的原始字节数组(byte[]).

我知道MonoTouch 中有包装UIImageJPEGRepresentationUIImagePNGRepresentation包装.我也知道如何使用它们.我不知道的是:

我该如何决定调用这两个函数中的哪一个?

即如果原始图像是JPEG图像,我不希望将其作为PNG而是作为JPEG,反之亦然.

有没有办法做到这一点,或者我错过了一些观点?

bry*_*mac 29

一旦你有了UIImage,它就能够使用UIImageJPEGRepresentation或生成JPEG或PNG UIImagePNGRepresentation.原始图像的格式仅在从其创建UIImage时很重要(决定CFImage加载它的提供者).

如果您的应用或算法对确保将其保存为原始格式很重要,我认为您必须在编写时保留该信息.我仔细检查过,找不到任何宣传它来自哪种格式的东西.

您是要改变图像UIImageView还是图像在您的体验中保持不变?如果它没有改变,你只需要UI来选择图像,你可以获得文件字节吗?例如,如果您显示图像只是为了选择然后将它们上传到服务器或其他东西,那么UIImage只能用于查看和选择,如果您的数据结构记住它来自哪个文件,您可以将这些位从磁盘上取回并上传.如果您在视图中更改文件,那么您或用户需要决定图像的输出(以及jpeg的质量).

  • 如果您正在使用`UIImagePickerController`,请查看`UIImagePickerControllerMediaType` [编辑信息键](https://developer.apple.com/library/prerelease/ios/documentation/UIKit/Reference/UIImagePickerControllerDelegate_Protocol/index.html# // apple_ref/DOC/constant_group/Editing_Information_Keys).然后,请参阅[UTI图像内容类型](https://developer.apple.com/library/prerelease/ios/documentation/MobileCoreServices/Reference/UTTypeRef/index.html#//apple_ref/doc/constant_group/UTI_Image_Content_Types). (3认同)