Add support for SDAnimatedImageRep for HEIC sequence
This commit is contained in:
parent
26a3402f16
commit
2afd943cd9
|
@ -13,12 +13,10 @@
|
|||
#else
|
||||
#import <MobileCoreServices/MobileCoreServices.h>
|
||||
#endif
|
||||
#import "SDImageHEICCoderInternal.h"
|
||||
|
||||
// Currently Image/IO does not support WebP
|
||||
#define kSDUTTypeWebP ((__bridge CFStringRef)@"public.webp")
|
||||
// AVFileTypeHEIC/AVFileTypeHEIF is defined in AVFoundation via iOS 11, we use this without import AVFoundation
|
||||
#define kSDUTTypeHEIC ((__bridge CFStringRef)@"public.heic")
|
||||
#define kSDUTTypeHEIF ((__bridge CFStringRef)@"public.heif")
|
||||
|
||||
@implementation NSData (ImageContentType)
|
||||
|
||||
|
|
|
@ -13,6 +13,8 @@
|
|||
#import "SDImageIOAnimatedCoderInternal.h"
|
||||
#import "SDImageGIFCoder.h"
|
||||
#import "SDImageAPNGCoder.h"
|
||||
#import "SDImageHEICCoder.h"
|
||||
#import "SDImageHEICCoderInternal.h"
|
||||
|
||||
@implementation SDAnimatedImageRep {
|
||||
CGImageSourceRef _imageSource;
|
||||
|
@ -61,6 +63,13 @@
|
|||
[self setProperty:NSImageCurrentFrame withValue:@(0)];
|
||||
NSUInteger loopCount = [SDImageAPNGCoder imageLoopCountWithSource:imageSource];
|
||||
[self setProperty:NSImageLoopCount withValue:@(loopCount)];
|
||||
} else if (CFStringCompare(type, kSDUTTypeHEICS, 0) == kCFCompareEqualTo) {
|
||||
// HEIC
|
||||
// Do initilize about frame count, current frame/duration and loop count
|
||||
[self setProperty:NSImageFrameCount withValue:@(frameCount)];
|
||||
[self setProperty:NSImageCurrentFrame withValue:@(0)];
|
||||
NSUInteger loopCount = [SDImageHEICCoder imageLoopCountWithSource:imageSource];
|
||||
[self setProperty:NSImageLoopCount withValue:@(loopCount)];
|
||||
}
|
||||
}
|
||||
return self;
|
||||
|
@ -88,6 +97,9 @@
|
|||
} else if (CFStringCompare(type, kUTTypePNG, 0) == kCFCompareEqualTo) {
|
||||
// APNG
|
||||
frameDuration = [SDImageAPNGCoder frameDurationAtIndex:index source:imageSource];
|
||||
} else if (CFStringCompare(type, kSDUTTypeHEICS, 0) == kCFCompareEqualTo) {
|
||||
// HEIC
|
||||
frameDuration = [SDImageHEICCoder frameDurationAtIndex:index source:imageSource];
|
||||
}
|
||||
if (!frameDuration) {
|
||||
return;
|
||||
|
|
|
@ -1,7 +1,13 @@
|
|||
#import "SDImageHEICCoder.h"
|
||||
/*
|
||||
* This file is part of the SDWebImage package.
|
||||
* (c) Olivier Poitrey <rs@dailymotion.com>
|
||||
*
|
||||
* For the full copyright and license information, please view the LICENSE
|
||||
* file that was distributed with this source code.
|
||||
*/
|
||||
|
||||
// AVFileTypeHEIC/AVFileTypeHEIF is defined in AVFoundation via iOS 11, we use this without import AVFoundation
|
||||
#define kSDUTTypeHEIC ((__bridge CFStringRef)@"public.heic")
|
||||
#import "SDImageHEICCoder.h"
|
||||
#import "SDImageHEICCoderInternal.h"
|
||||
|
||||
// These constantce are available from iOS 13+ and Xcode 11. This raw value is used for toolchain and firmware compatiblitiy
|
||||
static CFStringRef kSDCGImagePropertyHEICSDictionary = (__bridge CFStringRef)@"{HEICS}";
|
||||
|
|
|
@ -9,6 +9,12 @@
|
|||
#import <Foundation/Foundation.h>
|
||||
#import "SDImageHEICCoder.h"
|
||||
|
||||
// AVFileTypeHEIC/AVFileTypeHEIF is defined in AVFoundation via iOS 11, we use this without import AVFoundation
|
||||
#define kSDUTTypeHEIC ((__bridge CFStringRef)@"public.heic")
|
||||
#define kSDUTTypeHEIF ((__bridge CFStringRef)@"public.heif")
|
||||
// HEIC Sequence (Animated Image)
|
||||
#define kSDUTTypeHEICS ((__bridge CFStringRef)@"public.heics")
|
||||
|
||||
@interface SDImageHEICCoder ()
|
||||
|
||||
+ (BOOL)canDecodeFromHEICFormat;
|
||||
|
|
Loading…
Reference in New Issue