@@ -91,15 +91,21 @@ static inline CGContextRef _Nullable CreateWebPCanvas(BOOL hasAlpha, CGSize canv
9191WEBP_CSP_MODE ConvertCSPMode (CGBitmapInfo bitmapInfo) {
9292 // Get alpha info, byteOrder info
9393 CGImageAlphaInfo alphaInfo = bitmapInfo & kCGBitmapAlphaInfoMask ;
94- CGBitmapInfo byteOrderInfo = bitmapInfo & kCGBitmapByteOrderMask ;
94+ CGImageByteOrderInfo byteOrderInfo = bitmapInfo & kCGBitmapByteOrderMask ;
95+ size_t bitsPerPixel = 8 ;
96+ if (bitmapInfo & kCGBitmapFloatComponents ) {
97+ bitsPerPixel = 16 ; // 16-Bits, which don't support currently!
98+ }
9599 BOOL byteOrderNormal = NO ;
96100 switch (byteOrderInfo) {
97- case kCGBitmapByteOrderDefault : {
101+ case kCGImageByteOrderDefault : {
98102 byteOrderNormal = YES ;
99103 } break ;
100- case kCGBitmapByteOrder32Little : {
104+ case kCGImageByteOrder32Little :
105+ case kCGImageByteOrder16Little : {
101106 } break ;
102- case kCGBitmapByteOrder32Big : {
107+ case kCGImageByteOrder32Big :
108+ case kCGImageByteOrder16Big : {
103109 byteOrderNormal = YES ;
104110 } break ;
105111 default : break ;
@@ -161,7 +167,7 @@ WEBP_CSP_MODE ConvertCSPMode(CGBitmapInfo bitmapInfo) {
161167 break ;
162168 case kCGImageAlphaOnly : {
163169 // A
164- // Unsupported
170+ // Unsupported!
165171 return MODE_LAST;
166172 }
167173 break ;
@@ -621,8 +627,13 @@ - (nullable CGImageRef)sd_createWebpImageWithData:(WebPData)webpData colorSpace:
621627 CGBitmapInfo bitmapInfo = pixelFormat.bitmapInfo ;
622628 WEBP_CSP_MODE mode = ConvertCSPMode (bitmapInfo);
623629 if (mode == MODE_LAST) {
624- NSAssert (NO , @" Unsupported libwebp preferred CGBitmapInfo: %d " , bitmapInfo);
625- return nil ;
630+ #if DEBUG
631+ NSLog (@" Unsupported libwebp preferred CGBitmapInfo: %d " , bitmapInfo);
632+ #endif
633+ // Fallback to RGBA8888/RGB888 instead
634+ mode = MODE_rgbA;
635+ bitmapInfo = kCGBitmapByteOrderDefault ;
636+ bitmapInfo |= hasAlpha ? kCGImageAlphaPremultipliedLast : kCGImageAlphaNoneSkipLast ;
626637 }
627638 config.output .colorspace = mode;
628639 config.options .use_threads = 1 ;
0 commit comments