diff --git a/Example/SDWebImageWebPCoderExample/ViewController.m b/Example/SDWebImageWebPCoderExample/ViewController.m index ac91240..66652f0 100644 --- a/Example/SDWebImageWebPCoderExample/ViewController.m +++ b/Example/SDWebImageWebPCoderExample/ViewController.m @@ -42,8 +42,10 @@ NSLog(@"%@", @"Static WebP load success"); } dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ - NSData *webpData = [image sd_imageDataAsFormat:SDImageFormatWebP]; + NSUInteger maxFileSize = 4096; + NSData *webpData = [SDImageWebPCoder.sharedCoder encodedDataWithImage:image format:SDImageFormatWebP options:@{SDImageCoderEncodeMaxFileSize : @(maxFileSize)}]; if (webpData) { + NSCAssert(webpData.length <= maxFileSize, @"WebP Encoding with max file size limit works"); NSLog(@"%@", @"WebP encoding success"); } }); diff --git a/Tests/SDWebImageWebPCoderTests.m b/Tests/SDWebImageWebPCoderTests.m index 5dd8556..0a2d6b7 100644 --- a/Tests/SDWebImageWebPCoderTests.m +++ b/Tests/SDWebImageWebPCoderTests.m @@ -182,6 +182,20 @@ const int64_t kAsyncTestTimeout = 5; XCTAssert(canvas == NULL); } +- (void)test45WebPEncodingMaxFileSize { + NSURL *staticWebPURL = [[NSBundle bundleForClass:[self class]] URLForResource:@"TestImageStatic" withExtension:@"webp"]; + NSData *data = [NSData dataWithContentsOfURL:staticWebPURL]; + UIImage *image = [UIImage sd_imageWithWebPData:data]; + NSData *dataWithNoLimit = [SDImageWebPCoder.sharedCoder encodedDataWithImage:image format:SDImageFormatWebP options:nil]; + XCTAssertNotNil(dataWithNoLimit); + NSUInteger maxFileSize = 8192; + NSData *dataWithLimit = [SDImageWebPCoder.sharedCoder encodedDataWithImage:image format:SDImageFormatWebP options:@{SDImageCoderEncodeMaxFileSize : @(maxFileSize)}]; + XCTAssertNotNil(dataWithLimit); + XCTAssertGreaterThan(dataWithNoLimit.length, dataWithLimit.length); + XCTAssertGreaterThan(dataWithNoLimit.length, maxFileSize); + XCTAssertLessThanOrEqual(dataWithLimit.length, maxFileSize); +} + @end @implementation SDWebImageWebPCoderTests (Helpers)