歡迎加入我個(gè)人維護(hù)QQ群:379069176
PS:定期分享干貨
將多張圖片同時(shí)保存到相冊(cè)中,出現(xiàn)的錯(cuò)誤
將多張圖片保存到相冊(cè)中的時(shí)候杏瞻,可能會(huì)出現(xiàn)系統(tǒng)忙碌或者一些莫名其妙的錯(cuò)誤所刀,使得程序在運(yùn)行的時(shí)候,有的圖片保存成功捞挥,有的圖片則保存失敗浮创。原因有很多,最常見(jiàn)的原因應(yīng)該是在同時(shí)保存圖片的時(shí)候執(zhí)行的是異步砌函,所以導(dǎo)致系統(tǒng)出錯(cuò)斩披,一般解決方案會(huì)使用逐一保存的方式,如果出錯(cuò)重新保存讹俊,雖然可以解決一部分的問(wèn)題垦沉,但是仔細(xì)推敲一下,如果不是因?yàn)楫惒絾?wèn)題引發(fā)的錯(cuò)誤怎么辦仍劈?厕倍?系統(tǒng)會(huì)陷入無(wú)限循環(huán)中去。
解決方法:用Photos FrameWork
來(lái)解決贩疙。
代碼:
func saveImageInAlbum() -> NSError? {
var err: NSError?
PHPhotoLibrary.sharedPhotoLibrary().performChanges({
let _ = PHAssetChangeRequest.creationRequestForAssetFromImage(self.image)
}, completionHandler: { (success, error) -> Void in
if let error = error {
err = error
LOG(error.description)
}
self.complete = true
})
while !complete {
NSRunLoop.currentRunLoop().runMode(NSDefaultRunLoopMode, beforeDate: NSDate(timeIntervalSinceNow:0.01))
}
return err
}
通過(guò)上面的代碼讹弯,在保存圖片的地方進(jìn)行調(diào)用即可,這個(gè)方法返回一個(gè)錯(cuò)誤信息屋群,可以根據(jù)錯(cuò)誤信息進(jìn)一步做處理闸婴。
根據(jù)ImageData判斷Image的類型
獲得imageData的2進(jìn)制數(shù)據(jù)之后,來(lái)進(jìn)行對(duì)圖片格式的判斷
/// image類型判斷
func imageType(imgData : NSData) -> ImageType {
var c = [UInt32](count: 1, repeatedValue: 0)
let res : ImageType
imgData.getBytes(&c, length: 1)
switch (c[0]) {
case 0xFF:
res = .Jpeg
case 0x89:
res = .Png
case 0x47:
res = .Gif
case 0x49, 0x4D :
res = .Tiff
default:
res = .Unknown
}
return res
}
/// 類型
enum ImageType {
case Jpeg
case Png
case Gif
case Tiff
case Unknown
var ext: String {
switch self {
case .Jpeg:
return "jpg"
case .Png:
return "png"
case .Gif:
return "gif"
case .Tiff:
return "tiff"
case .Unknown:
return ""
}
}
}
image的縮放
這里做個(gè)備忘:
/// ImageView
func resizeImage(image: UIImage, targetSize: CGSize) -> UIImage {
if image.size == targetSize {
return image
}
let rect = CGRect(x: 0, y: 0, width: targetSize.width, height: targetSize.height)
UIGraphicsBeginImageContext(rect.size)
image.drawInRect(rect)
let resultImage = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()
return resultImage
}
好了芍躏,關(guān)于圖片相關(guān)的一些Tips今后會(huì)時(shí)時(shí)更新。