Add the support for embed thumbnail for JPEG/HEIF/AVIF
This commit is contained in:
parent
8d1d0b0802
commit
f84678a44d
|
@ -79,6 +79,14 @@ FOUNDATION_EXPORT SDImageCoderOption _Nonnull const SDImageCoderEncodeMaxPixelSi
|
||||||
*/
|
*/
|
||||||
FOUNDATION_EXPORT SDImageCoderOption _Nonnull const SDImageCoderEncodeMaxFileSize;
|
FOUNDATION_EXPORT SDImageCoderOption _Nonnull const SDImageCoderEncodeMaxFileSize;
|
||||||
|
|
||||||
|
/**
|
||||||
|
A Boolean value indicating the encoding format should contains a thumbnail image into the output data. Only some of image format (like JPEG/HEIF/AVIF) support this behavior. The embed thumbnail will be used during next time thumbnail decoding (provided `.thumbnailPixelSize`), which is faster than full image thumbnail decoding. (NSNumber)
|
||||||
|
Defaults to NO, which does not embed any thumbnail.
|
||||||
|
@note The thumbnail image's pixel size is not defined, the encoder can choose the proper pixel size which is suitable for encoding quality.
|
||||||
|
@note works for `SDImageCoder`
|
||||||
|
*/
|
||||||
|
FOUNDATION_EXPORT SDImageCoderOption _Nonnull const SDImageCoderEncodeEmbedThumbnail;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
A SDWebImageContext object which hold the original context options from top-level API. (SDWebImageContext)
|
A SDWebImageContext object which hold the original context options from top-level API. (SDWebImageContext)
|
||||||
This option is ignored for all built-in coders and take no effect.
|
This option is ignored for all built-in coders and take no effect.
|
||||||
|
|
|
@ -18,5 +18,6 @@ SDImageCoderOption const SDImageCoderEncodeCompressionQuality = @"encodeCompress
|
||||||
SDImageCoderOption const SDImageCoderEncodeBackgroundColor = @"encodeBackgroundColor";
|
SDImageCoderOption const SDImageCoderEncodeBackgroundColor = @"encodeBackgroundColor";
|
||||||
SDImageCoderOption const SDImageCoderEncodeMaxPixelSize = @"encodeMaxPixelSize";
|
SDImageCoderOption const SDImageCoderEncodeMaxPixelSize = @"encodeMaxPixelSize";
|
||||||
SDImageCoderOption const SDImageCoderEncodeMaxFileSize = @"encodeMaxFileSize";
|
SDImageCoderOption const SDImageCoderEncodeMaxFileSize = @"encodeMaxFileSize";
|
||||||
|
SDImageCoderOption const SDImageCoderEncodeEmbedThumbnail = @"encodeEmbedThumbnail";
|
||||||
|
|
||||||
SDImageCoderOption const SDImageCoderWebImageContext = @"webImageContext";
|
SDImageCoderOption const SDImageCoderWebImageContext = @"webImageContext";
|
||||||
|
|
|
@ -484,6 +484,11 @@ static NSString * kSDCGImageDestinationRequestedFileSize = @"kCGImageDestination
|
||||||
// Remove the quality if we have file size limit
|
// Remove the quality if we have file size limit
|
||||||
properties[(__bridge NSString *)kCGImageDestinationLossyCompressionQuality] = nil;
|
properties[(__bridge NSString *)kCGImageDestinationLossyCompressionQuality] = nil;
|
||||||
}
|
}
|
||||||
|
BOOL embedThumbnail = NO;
|
||||||
|
if (options[SDImageCoderEncodeEmbedThumbnail]) {
|
||||||
|
embedThumbnail = [options[SDImageCoderEncodeEmbedThumbnail] boolValue];
|
||||||
|
}
|
||||||
|
properties[(__bridge NSString *)kCGImageDestinationEmbedThumbnail] = @(embedThumbnail);
|
||||||
|
|
||||||
BOOL encodeFirstFrame = [options[SDImageCoderEncodeFirstFrameOnly] boolValue];
|
BOOL encodeFirstFrame = [options[SDImageCoderEncodeFirstFrameOnly] boolValue];
|
||||||
if (encodeFirstFrame || frames.count == 0) {
|
if (encodeFirstFrame || frames.count == 0) {
|
||||||
|
|
|
@ -294,6 +294,11 @@ static NSString * kSDCGImageDestinationRequestedFileSize = @"kCGImageDestination
|
||||||
// Remove the quality if we have file size limit
|
// Remove the quality if we have file size limit
|
||||||
properties[(__bridge NSString *)kCGImageDestinationLossyCompressionQuality] = nil;
|
properties[(__bridge NSString *)kCGImageDestinationLossyCompressionQuality] = nil;
|
||||||
}
|
}
|
||||||
|
BOOL embedThumbnail = NO;
|
||||||
|
if (options[SDImageCoderEncodeEmbedThumbnail]) {
|
||||||
|
embedThumbnail = [options[SDImageCoderEncodeEmbedThumbnail] boolValue];
|
||||||
|
}
|
||||||
|
properties[(__bridge NSString *)kCGImageDestinationEmbedThumbnail] = @(embedThumbnail);
|
||||||
|
|
||||||
// Add your image to the destination.
|
// Add your image to the destination.
|
||||||
CGImageDestinationAddImage(imageDestination, imageRef, (__bridge CFDictionaryRef)properties);
|
CGImageDestinationAddImage(imageDestination, imageRef, (__bridge CFDictionaryRef)properties);
|
||||||
|
|
Loading…
Reference in New Issue