Bug 1561756 - Convert the NSImage into an NSBitmapImageRep without using lockFocus. r=tnikkel

Differential Revision: https://phabricator.services.mozilla.com/D36124

--HG--
extra : moz-landing-system : lando
This commit is contained in:
Markus Stange 2019-06-26 22:42:39 +00:00
parent 95706218a2
commit b7d0b6adf0

View File

@ -77,12 +77,11 @@ NSString* const openSharingSubpaneProtocolValue = @"com.apple.share-services";
@end
static NSString* NSImageToBase64(const NSImage* aImage) {
[aImage lockFocus];
NSBitmapImageRep* bitmapRep = [[NSBitmapImageRep alloc]
initWithFocusedViewRect:NSMakeRect(0, 0, aImage.size.width, aImage.size.height)];
[aImage unlockFocus];
NSRect rect = NSMakeRect(0, 0, aImage.size.width, aImage.size.height);
NSImageRep* bestRep = [aImage bestRepresentationForRect:rect context:nil hints:nil];
NSData* tiffData = [NSBitmapImageRep TIFFRepresentationOfImageRepsInArray:@[ bestRep ]];
NSBitmapImageRep* bitmapRep = [NSBitmapImageRep imageRepWithData:tiffData];
NSData* imageData = [bitmapRep representationUsingType:NSPNGFileType properties:@{}];
[bitmapRep release];
NSString* base64Encoded = [imageData base64EncodedStringWithOptions:0];
return [NSString stringWithFormat:@"data:image/png;base64,%@", base64Encoded];
}