diff --git a/SDWebImage/Core/SDImageIOCoder.m b/SDWebImage/Core/SDImageIOCoder.m index 4c32bd032..6cffd0f9b 100644 --- a/SDWebImage/Core/SDImageIOCoder.m +++ b/SDWebImage/Core/SDImageIOCoder.m @@ -12,6 +12,7 @@ #import "UIImage+Metadata.h" #import "SDImageGraphics.h" #import "SDImageIOAnimatedCoderInternal.h" +#import "SDGraphicsImageRenderer.h" #import #import @@ -95,22 +96,22 @@ + (UIImage *)createBitmapPDFWithData:(nonnull NSData *)data pageNumber:(NSUInteg CGAffineTransform scaleTransform = CGAffineTransformMakeScale(xScale, yScale); CGAffineTransform transform = CGPDFPageGetDrawingTransform(page, box, drawRect, 0, preserveAspectRatio); - SDGraphicsBeginImageContextWithOptions(targetRect.size, NO, 0); - CGContextRef context = SDGraphicsGetCurrentContext(); - + SDGraphicsImageRendererFormat *format = [[SDGraphicsImageRendererFormat alloc] init]; + format.opaque = NO; + SDGraphicsImageRenderer *renderer = [[SDGraphicsImageRenderer alloc] initWithSize:targetRect.size format:format]; + image = [renderer imageWithActions:^(CGContextRef _Nonnull context) { + #if SD_UIKIT || SD_WATCH - // Core Graphics coordinate system use the bottom-left, UIKit use the flipped one - CGContextTranslateCTM(context, 0, targetRect.size.height); - CGContextScaleCTM(context, 1, -1); + // Core Graphics coordinate system use the bottom-left, UIKit use the flipped one + CGContextTranslateCTM(context, 0, targetRect.size.height); + CGContextScaleCTM(context, 1, -1); #endif - - CGContextConcatCTM(context, scaleTransform); - CGContextConcatCTM(context, transform); - - CGContextDrawPDFPage(context, page); - - image = SDGraphicsGetImageFromCurrentImageContext(); - SDGraphicsEndImageContext(); + + CGContextConcatCTM(context, scaleTransform); + CGContextConcatCTM(context, transform); + + CGContextDrawPDFPage(context, page); + }]; CGPDFDocumentRelease(document); diff --git a/SDWebImage/Core/UIImage+Transform.m b/SDWebImage/Core/UIImage+Transform.m index 2cd8a6f9b..a9d8bf081 100644 --- a/SDWebImage/Core/UIImage+Transform.m +++ b/SDWebImage/Core/UIImage+Transform.m @@ -706,10 +706,13 @@ - (nullable UIImage *)sd_blurredImageWithRadius:(CGFloat)blurRadius { if (CGImageGetBitsPerPixel(imageRef) != 32 || CGImageGetBitsPerComponent(imageRef) != 8 || !((CGImageGetBitmapInfo(imageRef) & kCGBitmapAlphaInfoMask))) { - SDGraphicsBeginImageContextWithOptions(self.size, NO, self.scale); - [self drawInRect:CGRectMake(0, 0, self.size.width, self.size.height)]; - imageRef = SDGraphicsGetImageFromCurrentImageContext().CGImage; - SDGraphicsEndImageContext(); + SDGraphicsImageRendererFormat *format = [[SDGraphicsImageRendererFormat alloc] init]; + format.scale = self.scale; + format.opaque = NO; + SDGraphicsImageRenderer *renderer = [[SDGraphicsImageRenderer alloc] initWithSize:self.size format:format]; + imageRef = [renderer imageWithActions:^(CGContextRef _Nonnull context) { + [self drawInRect:CGRectMake(0, 0, self.size.width, self.size.height)]; + }].CGImage; } vImage_Buffer effect = {}, scratch = {};