Skip to content

Commit 93846be

Browse files
authored
Merge pull request #116 from bcse/main
Fix: Create JPEG images without embedded ICC profile
2 parents b6ff14c + 88b5502 commit 93846be

File tree

2 files changed

+24
-2
lines changed

2 files changed

+24
-2
lines changed

image_editor_common/ios/Classes/EditorUIImageHandler.m

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@
77

88
#import "EditorUIImageHandler.h"
99
#import <CoreImage/CIFilterBuiltins.h>
10+
#import <ImageIO/ImageIO.h>
11+
#import <MobileCoreServices/MobileCoreServices.h>
1012

1113

1214
void releaseCGContext(CGContextRef ref) {
@@ -114,7 +116,16 @@ - (NSData *)outputMemory {
114116
if (fmt.format == 0) {
115117
return UIImagePNGRepresentation(outImage);
116118
} else {
117-
return UIImageJPEGRepresentation(outImage, ((CGFloat) fmt.quality) / 100);
119+
NSMutableData *data = [NSMutableData new];
120+
CGImageDestinationRef imageDestination = CGImageDestinationCreateWithData((__bridge CFMutableDataRef)data, kUTTypeJPEG, 1, NULL);
121+
NSDictionary *options = @{
122+
(id)kCGImageDestinationLossyCompressionQuality : @(((CGFloat)fmt.quality) / 100),
123+
(id)kCGImageDestinationOptimizeColorForSharing: (id)kCFBooleanTrue
124+
};
125+
CGImageDestinationAddImage(imageDestination, outImage.CGImage, (CFDictionaryRef)options);
126+
CGImageDestinationFinalize(imageDestination);
127+
CFRelease(imageDestination);
128+
return data;
118129
}
119130
}
120131

image_editor_common/ios/Classes/FIMerger.m

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@
77

88
#import "FIMerger.h"
99
#import "EditorUIImageHandler.h"
10+
#import <ImageIO/ImageIO.h>
11+
#import <MobileCoreServices/MobileCoreServices.h>
1012

1113
@implementation FIMerger
1214

@@ -35,7 +37,16 @@ - (NSData *)outputMemory:(UIImage *)image {
3537
if (fmt.format == 0) {
3638
return UIImagePNGRepresentation(image);
3739
} else {
38-
return UIImageJPEGRepresentation(image, ((CGFloat)fmt.quality) / 100);
40+
NSMutableData *data = [NSMutableData new];
41+
CGImageDestinationRef imageDestination = CGImageDestinationCreateWithData((__bridge CFMutableDataRef)data, kUTTypeJPEG, 1, NULL);
42+
NSDictionary *options = @{
43+
(id)kCGImageDestinationLossyCompressionQuality : @(((CGFloat)fmt.quality) / 100),
44+
(id)kCGImageDestinationOptimizeColorForSharing: (id)kCFBooleanTrue
45+
};
46+
CGImageDestinationAddImage(imageDestination, image.CGImage, (CFDictionaryRef)options);
47+
CGImageDestinationFinalize(imageDestination);
48+
CFRelease(imageDestination);
49+
return data;
3950
}
4051
}
4152

0 commit comments

Comments
 (0)