@@ -96,36 +96,17 @@ @implementation UIImage (ForceDecode)
96
96
97
97
+ (UIImage *)decodedImageWithImage : (UIImage *)image
98
98
{
99
- CGImageRef imageRef = image.CGImage ;
100
- CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB ();
101
- CGImageAlphaInfo alphaInfo = CGImageGetAlphaInfo (imageRef);
102
-
99
+ CGImageAlphaInfo alphaInfo = CGImageGetAlphaInfo (image.CGImage );
103
100
BOOL imageHasAlphaInfo = (alphaInfo != kCGImageAlphaNone &&
104
101
alphaInfo != kCGImageAlphaNoneSkipFirst &&
105
102
alphaInfo != kCGImageAlphaNoneSkipLast );
106
103
107
- int bytesPerPixel = alphaInfo != kCGImageAlphaNone ? 4 : 3 ;
108
- CGBitmapInfo bitmapInfo = imageHasAlphaInfo ? kCGImageAlphaPremultipliedLast : alphaInfo;
109
-
110
- CGContextRef context = CGBitmapContextCreate (NULL ,
111
- CGImageGetWidth (imageRef),
112
- CGImageGetHeight (imageRef),
113
- 8 ,
114
- // Just always return width * bytesPerPixel will be enough
115
- CGImageGetWidth (imageRef) * bytesPerPixel,
116
- // System only supports RGB, set explicitly
117
- colorSpace,
118
- bitmapInfo);
119
- CGColorSpaceRelease (colorSpace);
120
- if (!context) return nil ;
121
-
122
- CGRect rect = (CGRect){CGPointZero,{CGImageGetWidth (imageRef), CGImageGetHeight (imageRef)}};
123
- CGContextDrawImage (context, rect, imageRef);
124
- CGImageRef decompressedImageRef = CGBitmapContextCreateImage (context);
125
- CGContextRelease (context);
126
-
127
- UIImage *decompressedImage = [[UIImage alloc ] initWithCGImage: decompressedImageRef scale: image.scale orientation: image.imageOrientation];
128
- CGImageRelease (decompressedImageRef);
104
+ UIGraphicsBeginImageContextWithOptions (image.size , !imageHasAlphaInfo, 0 );
105
+ CGRect rect = (CGRect){.origin = CGPointZero, .size = image.size };
106
+ [image drawInRect: rect];
107
+ UIImage *decompressedImage = UIGraphicsGetImageFromCurrentImageContext ();
108
+ UIGraphicsEndImageContext ();
109
+
129
110
return SDWIReturnAutoreleased (decompressedImage);
130
111
}
131
112
0 commit comments