Skip to content

Commit 716093c

Browse files
committed
Update README, example and test case
1 parent 7e2e3db commit 716093c

File tree

5 files changed

+90
-1
lines changed

5 files changed

+90
-1
lines changed

Example/SDWebImageAVIFCoder.xcodeproj/project.pbxproj

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
objects = {
88

99
/* Begin PBXBuildFile section */
10+
32B000392A137E8700FB2873 /* fox.profile0.8bpc.yuv420.avif in Resources */ = {isa = PBXBuildFile; fileRef = 32B000372A137DAA00FB2873 /* fox.profile0.8bpc.yuv420.avif */; };
1011
32D3263C226344EC001B208C /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 32D3263B226344EC001B208C /* AppDelegate.m */; };
1112
32D3263F226344EC001B208C /* ViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 32D3263E226344EC001B208C /* ViewController.m */; };
1213
32D32641226344EC001B208C /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 32D32640226344EC001B208C /* Assets.xcassets */; };
@@ -1866,6 +1867,7 @@
18661867
207C633217DCC3D0312C335C /* Pods-SDWebImageAVIFCoder_Example.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-SDWebImageAVIFCoder_Example.release.xcconfig"; path = "Target Support Files/Pods-SDWebImageAVIFCoder_Example/Pods-SDWebImageAVIFCoder_Example.release.xcconfig"; sourceTree = "<group>"; };
18671868
2783F1D7B48DB3ED9ADFF864 /* libPods-SDWebImageAVIFCoder_Example.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-SDWebImageAVIFCoder_Example.a"; sourceTree = BUILT_PRODUCTS_DIR; };
18681869
3260C60722634CF90046E4C8 /* SDWebImageAVIFCoder_Example macOS.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = "SDWebImageAVIFCoder_Example macOS.entitlements"; sourceTree = "<group>"; };
1870+
32B000372A137DAA00FB2873 /* fox.profile0.8bpc.yuv420.avif */ = {isa = PBXFileReference; lastKnownFileType = file; path = fox.profile0.8bpc.yuv420.avif; sourceTree = "<group>"; };
18691871
32D32638226344EC001B208C /* SDWebImageAVIFCoder_Example macOS.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "SDWebImageAVIFCoder_Example macOS.app"; sourceTree = BUILT_PRODUCTS_DIR; };
18701872
32D3263A226344EC001B208C /* AppDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = "<group>"; };
18711873
32D3263B226344EC001B208C /* AppDelegate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AppDelegate.m; sourceTree = "<group>"; };
@@ -3757,6 +3759,14 @@
37573759
/* End PBXFrameworksBuildPhase section */
37583760

37593761
/* Begin PBXGroup section */
3762+
32B000362A137DAA00FB2873 /* Samples */ = {
3763+
isa = PBXGroup;
3764+
children = (
3765+
32B000372A137DAA00FB2873 /* fox.profile0.8bpc.yuv420.avif */,
3766+
);
3767+
path = Samples;
3768+
sourceTree = "<group>";
3769+
};
37603770
32D32639226344EC001B208C /* SDWebImageAVIFCoder_Example macOS */ = {
37613771
isa = PBXGroup;
37623772
children = (
@@ -3844,6 +3854,7 @@
38443854
6003F5B5195388D20070C39A /* Tests */ = {
38453855
isa = PBXGroup;
38463856
children = (
3857+
32B000362A137DAA00FB2873 /* Samples */,
38473858
6D074D3D240E94FC002197C8 /* Images */,
38483859
6003F5BB195388D20070C39A /* Tests.m */,
38493860
6003F5B6195388D20070C39A /* Supporting Files */,
@@ -7565,6 +7576,7 @@
75657576
6D07558A240E9507002197C8 /* green.255x255.8bpc.yuv420.color.limited.without-alpha.avif in Resources */,
75667577
6D075676240E9508002197C8 /* blue.255x255.10bpc.yuv444.color.limited.with-alpha.avif in Resources */,
75677578
6D0756EC240E9508002197C8 /* e47a8c.256x255.12bpc.yuv422.color.limited.without-alpha.avif in Resources */,
7579+
32B000392A137E8700FB2873 /* fox.profile0.8bpc.yuv420.avif in Resources */,
75687580
6D0755EE240E9508002197C8 /* gray.256x255.12bpc.yuv422.color.full.without-alpha.avif in Resources */,
75697581
6D07563D240E9508002197C8 /* e47a8c.256x256.8bpc.yuv444.color.limited.without-alpha.avif in Resources */,
75707582
6D0758C6240E9508002197C8 /* blue.255x255.10bpc.yuv420.mono.limited.with-alpha.avif in Resources */,
@@ -8049,10 +8061,10 @@
80498061
"DEBUG=1",
80508062
"$(inherited)",
80518063
);
8064+
HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Private";
80528065
INFOPLIST_FILE = "Tests/Tests-Info.plist";
80538066
PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.demo.${PRODUCT_NAME:rfc1034identifier}";
80548067
PRODUCT_NAME = "$(TARGET_NAME)";
8055-
HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Private";
80568068
TEST_HOST = "$(BUILT_PRODUCTS_DIR)/SDWebImageAVIFCoder_Example.app/SDWebImageAVIFCoder_Example";
80578069
WRAPPER_EXTENSION = xctest;
80588070
};
78.9 KB
Binary file not shown.

Example/Tests/Tests.m

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -267,6 +267,21 @@ -(void)testEncodingAndDecoding
267267
[self assertColor8:@"<in-memory>" img:image.CGImage expectedColor: kRed8];
268268
}
269269

270+
-(void)testThumbnailDecoding
271+
{
272+
NSString *filename = @"fox.profile0.8bpc.yuv420.avif";
273+
NSString* imgBundle = [[NSBundle mainBundle] pathForResource:filename ofType:@""];
274+
NSData* imgData = [[NSData alloc] initWithContentsOfFile: imgBundle];
275+
UIImage *originImage = [self->coder decodedImageWithData:imgData options:nil];
276+
XCTAssertEqual(originImage.size.width, 1204);
277+
XCTAssertEqual(originImage.size.height, 800);
278+
279+
CGSize thumbnailSize = CGSizeMake(100, 100);
280+
UIImage *thumbnailImage = [self->coder decodedImageWithData:imgData options:@{SDImageCoderDecodeThumbnailPixelSize: @(thumbnailSize)}];
281+
XCTAssertEqual(thumbnailImage.size.width, 100);
282+
XCTAssertEqual(thumbnailImage.size.height, 67);
283+
}
284+
270285
-(void)assertColor8: (NSString*)filename img:(CGImageRef)img expectedColor:(UInt8*)expectedColor
271286
{
272287
CFDataRef rawData = CGDataProviderCopyData(CGImageGetDataProvider(img));

README.md

Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -156,6 +156,66 @@ let imageView: UIImageView
156156
imageView.sd_setImage(with: url)
157157
```
158158

159+
### Decoding
160+
161+
+ Objective-C
162+
163+
```objective-c
164+
// AVIF image decoding
165+
NSData *avifData;
166+
UIImage *image = [[SDImageAVIFCoder sharedCoder] decodedImageWithData:avifData options:nil];
167+
```
168+
169+
+ Swift
170+
171+
```swift
172+
// AVIF image decoding
173+
let avifData: Data
174+
let image = SDImageAVIFCoder.shared.decodedImage(with: data, options: nil)
175+
```
176+
177+
### Thumbnail Decoding (0.10.0+)
178+
179+
+ Objective-C
180+
181+
```objective-c
182+
// AVIF thumbnail image decoding
183+
NSData *avifData;
184+
CGSize thumbnailSize = CGSizeMake(300, 300);
185+
UIImage *thumbnailImage = [[SDImageAVIFCoder sharedCoder] decodedImageWithData:avifData options:@{SDImageCoderDecodeThumbnailPixelSize : @(thumbnailSize)}];
186+
```
187+
188+
+ Swift
189+
190+
```swift
191+
// AVIF thumbnail image decoding
192+
let avifData: Data
193+
let thumbnailSize = CGSize(width: 300, height: 300)
194+
let image = SDImageAVIFCoder.shared.decodedImage(with: data, options: [.decodeThumbnailPixelSize: thumbnailSize])
195+
```
196+
197+
### Encoding (No animtion support)
198+
199+
+ Objective-c
200+
201+
```objective-c
202+
// AVIF image encoding
203+
UIImage *image;
204+
NSData *avifData = [[SDImageAVIFCoder sharedCoder] encodedDataWithImage:image format:SDImageFormatAVIF options:nil];
205+
// Encode Quality
206+
NSData *lossyAVIFData = [[SDImageAVIFCoder sharedCoder] encodedDataWithImage:image format:SDImageFormatAVIF options:@{SDImageCoderEncodeCompressionQuality : @(0.1)}]; // [0, 1] compression quality
207+
```
208+
209+
+ Swift
210+
211+
```swift
212+
// AVIF image encoding
213+
let image: UIImage
214+
let avifData = SDImageAVIFCoder.shared.encodedData(with: image, format: .avif, options: nil)
215+
// Encode Quality
216+
let lossyAVIFData = SDImageAVIFCoder.shared.encodedData(with: image, format: .avif, options: [.encodeCompressionQuality: 0.1]) // [0, 1] compression quality
217+
```
218+
159219
## Screenshot
160220

161221
<img src="https://raw.githubusercontent.com/SDWebImage/SDWebImageAVIFCoder/master/Example/Screenshot/AVIFDemo-iOS.png" width="300" />

SDWebImageAVIFCoder/Classes/SDImageAVIFCoder.m

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -302,6 +302,8 @@ - (nullable NSData *)encodedDataWithImage:(nullable UIImage *)image format:(SDIm
302302
avifEncoder *encoder = avifEncoderCreate();
303303
encoder->minQuantizer = rescaledQuality;
304304
encoder->maxQuantizer = rescaledQuality;
305+
encoder->minQuantizerAlpha = rescaledQuality;
306+
encoder->maxQuantizerAlpha = rescaledQuality;
305307
encoder->maxThreads = 2;
306308
avifResult result = avifEncoderWrite(encoder, avif, &raw);
307309

0 commit comments

Comments
 (0)