背景
我最近问过这个问题:convert NSData of an image into a string
但是,我遇到了一个奇怪的问题:我的代码告诉我所有图像都是.png文件。
例如我将这张图片下载到我的iphone模拟器上并作为NSData对象上传到我的应用程序:
<89504e47 0d0a1a0a 0000000d 49484452 00000032 00000032 08060000 001e3f88 b1000000 01735247 4200aece 1ce90000 001c6944 4f540000 00020000 00000000 00190000 00280000 00190000 00190000 01585cd2 43eb0000 01244944 41546805 ec93d10d c3200c44 bb5c36ed 089da36b 545da0bf 691eea45 861a1148 3e12c948 08e3e0e3 9e696fb7 18d181e8 4074203a 101db870 07e6df00 c1c69742 c2f8344d 6996f125 a0641288 f7e79e66 195bc043 5f87cbf5 fc7b84d1 914999b7 7bc51650 77efb937 d522343f 5e69d13a 228a80cc 6354a69f 4b5c4e7d d34aedc8 9d6b0d02 c93c2076 760a2323 538228cd 7b7b6a74 1e8dd558 6f407106 20980e51 24ac2162 cf742da7 06a0d3eb 3f3b8f40 06d32948 b940d4dd 9a692f7f 18085498 4930cb92 516ed850 2a1056cf 6c2b471d 63c375ed 237b84a8 55675ba6 bdef8782 b451fd13 8218f959 092a40fc de8e67f5 2a74565d deb2ea7c bcc878ef ff2bf51a b5ff88ba 5e7ba153 bc065880 3030644d dbb80641 fe142016 c0334ece cb0b6c2b c4170000 ffffa32a b1ee0000 012b4944 4154ed95 d10dc230 0c44bb5c 37651ef6 60017e81 abfaa493 95b46e15 d27ec452 b01b5fe2 3b1bca34 35b4cf6a ba92789e e7cfebfd 5896e2e7 2ff6a53d 997c6929 d790e2fe 554ec663 91931079 1740acfd 2ddbafdc 08010908 43daa750 13213108 6944e7dc 35b5ce8b 1c8bce6f f94bc520 22dbf95b 0a41045d 97df22ba 97bb6422 88e0b7b0 473293ef 2e04114c 22433283 e92a0411 2d272191 5d45e89d 861015ce 74398be9 2a0411ad a7d17d22 0889d388 cfd92980 bb641a2a 5a225edb 03ef1e01 78e564e7 fe8e0f9c 62125b5f a92804e2 0bc3f503 0cfe3221 91801389 393d6bc9 fc25a133 8e75cc81 de9e838a 8c178f02 4a79e19d a463fc2e c79c6377 f0144420 0801edeb aa5adecb 64308eff 5b2c226e b190e714 c7bc9e33 98d2b9b1 373a303a 303a303a 70eb0e7c 01f5b991 16aea4e6 27000000 0049454e 44ae4260 82>
我从这里得到的:http://www.picgifs.com/graphics/k/kawaii-small/graphics-kawaii-small-042264.gif是一个很小的.gif文件。
但是.png文件的所有magic numbers都是我的代码:
if image.length >= pngHeader.count {
if memcmp(image.bytes, pngHeader, pngHeader.count) == 0 {
image_type = "png"
}
}
总是错误标记图像。
问题:
有更可靠的方法来确定图像类型吗?
xcode是否在上传时转换图像类型? iphone会这样做吗?
额外信息:
用户可以通过点击一个按钮从手机中选择图像,该按钮可让他们选择要从手机上传的图像。
从手机上传到应用的代码是:
@IBOutlet var image: UIImageView!
@IBAction func loadImage(sender: AnyObject) {
let ImagePicker = UIImagePickerController()
ImagePicker.delegate = self
ImagePicker.sourceType = UIImagePickerControllerSourceType.PhotoLibrary
self.presentViewController(ImagePicker, animated: true, completion: nil)
}
func imagePickerController(picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : AnyObject]) {
image.image = info[UIImagePickerControllerOriginalImage] as? UIImage
self.dismissViewControllerAnimated(true, completion: nil)
}