commit
455188355f
|
@ -9,6 +9,7 @@
|
||||||
#import "UIImage+MultiFormat.h"
|
#import "UIImage+MultiFormat.h"
|
||||||
#import "UIImage+GIF.h"
|
#import "UIImage+GIF.h"
|
||||||
#import "NSData+ImageContentType.h"
|
#import "NSData+ImageContentType.h"
|
||||||
|
#import <ImageIO/ImageIO.h>
|
||||||
|
|
||||||
#ifdef SD_WEBP
|
#ifdef SD_WEBP
|
||||||
#import "UIImage+WebP.h"
|
#import "UIImage+WebP.h"
|
||||||
|
@ -30,10 +31,82 @@
|
||||||
#endif
|
#endif
|
||||||
else {
|
else {
|
||||||
image = [[UIImage alloc] initWithData:data];
|
image = [[UIImage alloc] initWithData:data];
|
||||||
|
UIImageOrientation orientation = [self sd_imageOrientationFromImageData:data];
|
||||||
|
if (orientation != UIImageOrientationUp) {
|
||||||
|
image = [UIImage imageWithCGImage:image.CGImage
|
||||||
|
scale:image.scale
|
||||||
|
orientation:orientation];
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
return image;
|
return image;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
+(UIImageOrientation)sd_imageOrientationFromImageData:(NSData *)imageData {
|
||||||
|
UIImageOrientation result = UIImageOrientationUp;
|
||||||
|
CGImageSourceRef imageSource = CGImageSourceCreateWithData((__bridge CFDataRef)imageData, NULL);
|
||||||
|
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 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;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@end
|
@end
|
||||||
|
|
Loading…
Reference in New Issue