@@ -464,7 +464,13 @@ - (NSData *)encodedDataWithImage:(UIImage *)image format:(SDImageFormat)format o
464
464
BOOL encodeFirstFrame = [options[SDImageCoderEncodeFirstFrameOnly] boolValue ];
465
465
if (encodeFirstFrame || frames.count == 0 ) {
466
466
// for static single webp image
467
- data = [self sd_encodedWebpDataWithImage: image quality: compressionQuality];
467
+ CGImageRef imageRef = image.CGImage ;
468
+ #if SD_UIKIT || SD_WATCH
469
+ if (!imageRef) {
470
+ imageRef = image.images .firstObject .CGImage ;
471
+ }
472
+ #endif
473
+ data = [self sd_encodedWebpDataWithImage: imageRef quality: compressionQuality];
468
474
} else {
469
475
// for animated webp image
470
476
WebPMux *mux = WebPMuxNew ();
@@ -473,7 +479,7 @@ - (NSData *)encodedDataWithImage:(UIImage *)image format:(SDImageFormat)format o
473
479
}
474
480
for (size_t i = 0 ; i < frames.count ; i++) {
475
481
SDImageFrame *currentFrame = frames[i];
476
- NSData *webpData = [self sd_encodedWebpDataWithImage: currentFrame.image quality: compressionQuality];
482
+ NSData *webpData = [self sd_encodedWebpDataWithImage: currentFrame.image.CGImage quality: compressionQuality];
477
483
int duration = currentFrame.duration * 1000 ;
478
484
WebPMuxFrameInfo frame = { .bitstream .bytes = webpData.bytes ,
479
485
.bitstream .size = webpData.length ,
@@ -510,14 +516,12 @@ - (NSData *)encodedDataWithImage:(UIImage *)image format:(SDImageFormat)format o
510
516
return data;
511
517
}
512
518
513
- - (nullable NSData *)sd_encodedWebpDataWithImage : (nullable UIImage *)image quality : (double )quality {
514
- if (!image) {
519
+ - (nullable NSData *)sd_encodedWebpDataWithImage : (nullable CGImageRef)imageRef quality : (double )quality {
520
+ NSData *webpData;
521
+ if (!imageRef) {
515
522
return nil ;
516
523
}
517
524
518
- NSData *webpData;
519
- CGImageRef imageRef = image.CGImage ;
520
-
521
525
size_t width = CGImageGetWidth (imageRef);
522
526
size_t height = CGImageGetHeight (imageRef);
523
527
if (width == 0 || width > WEBP_MAX_DIMENSION) {
0 commit comments