Browse Source

Merge pull request #122 from liurenqiu520/master

add support for gif
Wei Wang 10 years ago
parent
commit
b89efb1f0b
1 changed files with 8 additions and 1 deletions
  1. 8 1
      Kingfisher/ImageCache.swift

+ 8 - 1
Kingfisher/ImageCache.swift

@@ -183,6 +183,7 @@ public extension ImageCache {
                 switch imageFormat {
                 case .PNG: data = UIImagePNGRepresentation(image)
                 case .JPEG: data = UIImageJPEGRepresentation(image, 1.0)
+                case .GIF: data = originalData
                 case .Unknown: data = UIImagePNGRepresentation(image.kf_normalizedImage())
                 }
                 
@@ -651,6 +652,7 @@ extension UIImage {
 private let pngHeader: [UInt8] = [0x89, 0x50, 0x4E, 0x47, 0x0D, 0x0A, 0x1A, 0x0A]
 private let jpgHeaderSOI: [UInt8] = [0xFF, 0xD8]
 private let jpgHeaderIF: [UInt8] = [0xFF, 0xE0]
+private let gifHeader: [UInt8] = [0x47, 0x49, 0x46]
 
 extension NSData {
     var kf_imageFormat: ImageFormat {
@@ -664,6 +666,11 @@ extension NSData {
                   buffer[3] == buffer[3] & jpgHeaderIF[1]
         {
             return .JPEG
+        }else if buffer[0] == gifHeader[0] &&
+            buffer[1] == gifHeader[1] &&
+            buffer[2] == gifHeader[2]
+        {
+            return .GIF
         }
         
         return .Unknown
@@ -671,7 +678,7 @@ extension NSData {
 }
 
 enum ImageFormat {
-    case Unknown, PNG, JPEG
+    case Unknown, PNG, JPEG, GIF
 }
 
 extension Dictionary {