Skip to content

Commit d226877

Browse files
committed
Fix the issue that PNG compression lost details, use TIFF as default solution
1 parent 0c57a68 commit d226877

1 file changed

Lines changed: 13 additions & 8 deletions

File tree

SDWebImageLinkPlugin/Classes/NSImage+SDWebImageLinkPlugin.m

Lines changed: 13 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,12 @@ + (instancetype)objectWithItemProviderData:(NSData *)data typeIdentifier:(NSStri
2424
#pragma mark - NSItemProviderWriting
2525

2626
+ (NSArray<NSString *> *)writableTypeIdentifiersForItemProvider {
27-
return [NSImage imageTypes];
27+
return @[(__bridge NSString *)kUTTypeTIFF,
28+
(__bridge NSString *)kUTTypePNG,
29+
(__bridge NSString *)kUTTypeJPEG,
30+
(__bridge NSString *)kUTTypeJPEG2000,
31+
(__bridge NSString *)kUTTypeBMP,
32+
(__bridge NSString *)kUTTypeGIF];
2833
}
2934

3035
- (nullable NSProgress *)loadDataWithTypeIdentifier:(nonnull NSString *)typeIdentifier forItemProviderCompletionHandler:(nonnull void (^)(NSData * _Nullable, NSError * _Nullable))completionHandler {
@@ -36,21 +41,21 @@ - (nullable NSProgress *)loadDataWithTypeIdentifier:(nonnull NSString *)typeIden
3641
} else {
3742
bitmapImageRep = [[NSBitmapImageRep alloc] initWithCGImage:self.CGImage];
3843
}
39-
NSBitmapImageFileType fileType;
40-
if ([typeIdentifier isEqualToString:(__bridge NSString *)kUTTypeJPEG]) {
44+
NSBitmapImageFileType fileType = NSBitmapImageFileTypeTIFF; // Defaults to TIFF
45+
if ([typeIdentifier isEqualToString:(__bridge NSString *)kUTTypeTIFF]) {
46+
fileType = NSBitmapImageFileTypeTIFF;
47+
} else if ([typeIdentifier isEqualToString:(__bridge NSString *)kUTTypePNG]) {
48+
fileType = NSBitmapImageFileTypePNG;
49+
} else if ([typeIdentifier isEqualToString:(__bridge NSString *)kUTTypeJPEG]) {
4150
fileType = NSBitmapImageFileTypeJPEG;
4251
} else if ([typeIdentifier isEqualToString:(__bridge NSString *)kUTTypeJPEG2000]) {
4352
fileType = NSBitmapImageFileTypeJPEG2000;
44-
} else if ([typeIdentifier isEqualToString:(__bridge NSString *)kUTTypePNG]) {
45-
fileType = NSBitmapImageFileTypePNG;
4653
} else if ([typeIdentifier isEqualToString:(__bridge NSString *)kUTTypeBMP]) {
4754
fileType = NSBitmapImageFileTypeBMP;
4855
} else if ([typeIdentifier isEqualToString:(__bridge NSString *)kUTTypeGIF]) {
4956
fileType = NSBitmapImageFileTypeGIF;
50-
} else if ([typeIdentifier isEqualToString:(__bridge NSString *)kUTTypeTIFF]) {
51-
fileType = NSBitmapImageFileTypeTIFF;
5257
}
53-
NSData *imageData = [bitmapImageRep representationUsingType:NSBitmapImageFileTypeJPEG properties:@{}];
58+
NSData *imageData = [bitmapImageRep representationUsingType:fileType properties:@{}];
5459
if (completionHandler) {
5560
completionHandler(imageData, nil);
5661
}

0 commit comments

Comments
 (0)