From 94217b294ccd75a34787eb04d6e273e99536e45b Mon Sep 17 00:00:00 2001 From: 重庆迈尖科技有限公司 Date: 星期三, 30 一月 2019 15:12:32 +0800 Subject: [PATCH] no message --- Pods/SDWebImage/SDWebImage/UIImage+MultiFormat.m | 176 ++++++++++++++-------------------------------------------- 1 files changed, 44 insertions(+), 132 deletions(-) diff --git a/Pods/SDWebImage/SDWebImage/UIImage+MultiFormat.m b/Pods/SDWebImage/SDWebImage/UIImage+MultiFormat.m index 378f389..664e096 100644 --- a/Pods/SDWebImage/SDWebImage/UIImage+MultiFormat.m +++ b/Pods/SDWebImage/SDWebImage/UIImage+MultiFormat.m @@ -7,114 +7,55 @@ */ #import "UIImage+MultiFormat.h" -#import "UIImage+GIF.h" -#import "NSData+ImageContentType.h" -#import <ImageIO/ImageIO.h> -#ifdef SD_WEBP -#import "UIImage+WebP.h" -#endif +#import "objc/runtime.h" +#import "SDWebImageCodersManager.h" @implementation UIImage (MultiFormat) +#if SD_MAC +- (NSUInteger)sd_imageLoopCount { + NSUInteger imageLoopCount = 0; + for (NSImageRep *rep in self.representations) { + if ([rep isKindOfClass:[NSBitmapImageRep class]]) { + NSBitmapImageRep *bitmapRep = (NSBitmapImageRep *)rep; + imageLoopCount = [[bitmapRep valueForProperty:NSImageLoopCount] unsignedIntegerValue]; + break; + } + } + return imageLoopCount; +} + +- (void)setSd_imageLoopCount:(NSUInteger)sd_imageLoopCount { + for (NSImageRep *rep in self.representations) { + if ([rep isKindOfClass:[NSBitmapImageRep class]]) { + NSBitmapImageRep *bitmapRep = (NSBitmapImageRep *)rep; + [bitmapRep setProperty:NSImageLoopCount withValue:@(sd_imageLoopCount)]; + break; + } + } +} + +#else + +- (NSUInteger)sd_imageLoopCount { + NSUInteger imageLoopCount = 0; + NSNumber *value = objc_getAssociatedObject(self, @selector(sd_imageLoopCount)); + if ([value isKindOfClass:[NSNumber class]]) { + imageLoopCount = value.unsignedIntegerValue; + } + return imageLoopCount; +} + +- (void)setSd_imageLoopCount:(NSUInteger)sd_imageLoopCount { + NSNumber *value = @(sd_imageLoopCount); + objc_setAssociatedObject(self, @selector(sd_imageLoopCount), value, OBJC_ASSOCIATION_RETAIN_NONATOMIC); +} +#endif + + (nullable UIImage *)sd_imageWithData:(nullable NSData *)data { - if (!data) { - return nil; - } - - UIImage *image; - SDImageFormat imageFormat = [NSData sd_imageFormatForImageData:data]; - if (imageFormat == SDImageFormatGIF) { - image = [UIImage sd_animatedGIFWithData:data]; - } -#ifdef SD_WEBP - else if (imageFormat == SDImageFormatWebP) - { - image = [UIImage sd_imageWithWebPData:data]; - } -#endif - else { - image = [[UIImage alloc] initWithData:data]; -#if SD_UIKIT || SD_WATCH - UIImageOrientation orientation = [self sd_imageOrientationFromImageData:data]; - if (orientation != UIImageOrientationUp) { - image = [UIImage imageWithCGImage:image.CGImage - scale:image.scale - orientation:orientation]; - } -#endif - } - - - return image; + return [[SDWebImageCodersManager sharedInstance] decodedImageWithData:data]; } - -#if SD_UIKIT || SD_WATCH -+(UIImageOrientation)sd_imageOrientationFromImageData:(nonnull NSData *)imageData { - UIImageOrientation result = UIImageOrientationUp; - CGImageSourceRef imageSource = CGImageSourceCreateWithData((__bridge CFDataRef)imageData, NULL); - if (imageSource) { - CFDictionaryRef properties = CGImageSourceCopyPropertiesAtIndex(imageSource, 0, NULL); - if (properties) { - CFTypeRef val; - int exifOrientation; - val = CFDictionaryGetValue(properties, kCGImagePropertyOrientation); - if (val) { - CFNumberGetValue(val, kCFNumberIntType, &exifOrientation); - result = [self sd_exifOrientationToiOSOrientation:exifOrientation]; - } // else - if it's not set it remains at up - CFRelease((CFTypeRef) properties); - } else { - //NSLog(@"NO PROPERTIES, FAIL"); - } - CFRelease(imageSource); - } - return result; -} - -#pragma mark EXIF orientation tag converter -// Convert an EXIF image orientation to an iOS one. -// reference see here: http://sylvana.net/jpegcrop/exif_orientation.html -+ (UIImageOrientation) sd_exifOrientationToiOSOrientation:(int)exifOrientation { - UIImageOrientation orientation = UIImageOrientationUp; - switch (exifOrientation) { - case 1: - orientation = UIImageOrientationUp; - break; - - case 3: - orientation = UIImageOrientationDown; - break; - - case 8: - orientation = UIImageOrientationLeft; - break; - - case 6: - orientation = UIImageOrientationRight; - break; - - case 2: - orientation = UIImageOrientationUpMirrored; - break; - - case 4: - orientation = UIImageOrientationDownMirrored; - break; - - case 5: - orientation = UIImageOrientationLeftMirrored; - break; - - case 7: - orientation = UIImageOrientationRightMirrored; - break; - default: - break; - } - return orientation; -} -#endif - (nullable NSData *)sd_imageData { return [self sd_imageDataAsFormat:SDImageFormatUndefined]; @@ -123,36 +64,7 @@ - (nullable NSData *)sd_imageDataAsFormat:(SDImageFormat)imageFormat { NSData *imageData = nil; if (self) { -#if SD_UIKIT || SD_WATCH - int alphaInfo = CGImageGetAlphaInfo(self.CGImage); - BOOL hasAlpha = !(alphaInfo == kCGImageAlphaNone || - alphaInfo == kCGImageAlphaNoneSkipFirst || - alphaInfo == kCGImageAlphaNoneSkipLast); - - BOOL usePNG = hasAlpha; - - // the imageFormat param has priority here. But if the format is undefined, we relly on the alpha channel - if (imageFormat != SDImageFormatUndefined) { - usePNG = (imageFormat == SDImageFormatPNG); - } - - if (usePNG) { - imageData = UIImagePNGRepresentation(self); - } else { - imageData = UIImageJPEGRepresentation(self, (CGFloat)1.0); - } -#else - NSBitmapImageFileType imageFileType = NSJPEGFileType; - if (imageFormat == SDImageFormatGIF) { - imageFileType = NSGIFFileType; - } else if (imageFormat == SDImageFormatPNG) { - imageFileType = NSPNGFileType; - } - - imageData = [NSBitmapImageRep representationOfImageRepsInArray:self.representations - usingType:imageFileType - properties:@{}]; -#endif + imageData = [[SDWebImageCodersManager sharedInstance] encodedDataWithImage:self format:imageFormat]; } return imageData; } -- Gitblit v1.8.0