@@ -123,6 +123,24 @@ - (BOOL)canEncodeToFormat:(SDImageFormat)format {
123
123
}
124
124
125
125
- (NSData *)encodedDataWithImage : (UIImage *)image format : (SDImageFormat)format options : (SDImageCoderOptions *)options {
126
+ if (!image) {
127
+ return nil ;
128
+ }
129
+
130
+ NSArray <SDImageFrame *> *frames = [SDImageCoderHelper framesFromAnimatedImage: image];
131
+ if (!frames || frames.count == 0 ) {
132
+ SDImageFrame *frame = [SDImageFrame frameWithImage: image duration: 0 ];
133
+ frames = @[frame];
134
+ }
135
+ return [self encodedDataWithFrames: frames loopCount: image.sd_imageLoopCount format: format options: options];
136
+ }
137
+
138
+ - (NSData *)encodedDataWithFrames : (NSArray <SDImageFrame *> *)frames loopCount : (NSUInteger )loopCount format : (SDImageFormat)format options : (SDImageCoderOptions *)options {
139
+ UIImage *image = frames.firstObject .image ; // Primary image
140
+ if (!image) {
141
+ return nil ;
142
+ }
143
+
126
144
double compressionQuality = 1 ;
127
145
if (options[SDImageCoderEncodeCompressionQuality]) {
128
146
compressionQuality = [options[SDImageCoderEncodeCompressionQuality] doubleValue ];
@@ -133,15 +151,14 @@ - (NSData *)encodedDataWithImage:(UIImage *)image format:(SDImageFormat)format o
133
151
YYImageType type = YYImageTypeFromSDImageFormat (format);
134
152
BOOL encodeFirstFrame = [options[SDImageCoderEncodeFirstFrameOnly] boolValue ];
135
153
136
- NSArray <SDImageFrame *> *frames = [SDImageCoderHelper framesFromAnimatedImage: image];
137
- if (encodeFirstFrame || frames.count == 0 ) {
154
+ if (encodeFirstFrame || frames.count <= 1 ) {
138
155
// Static Image
139
156
imageData = [YYImageEncoder encodeImage: image type: type quality: compressionQuality];
140
157
} else {
141
158
// Animated Image
142
159
YYImageEncoder *encoder = [[YYImageEncoder alloc ] initWithType: type];
143
160
encoder.quality = compressionQuality;
144
- encoder.loopCount = image. sd_imageLoopCount ;
161
+ encoder.loopCount = loopCount ;
145
162
if (!encoder) {
146
163
return nil ;
147
164
}
@@ -152,7 +169,6 @@ - (NSData *)encodedDataWithImage:(UIImage *)image format:(SDImageFormat)format o
152
169
imageData = [encoder encode ];
153
170
}
154
171
155
-
156
172
return imageData;
157
173
}
158
174
0 commit comments