diff --git a/Sources/HandySwiftUI/Extensions/ImageExt.swift b/Sources/HandySwiftUI/Extensions/ImageExt.swift index 3d10af4..b6d1058 100644 --- a/Sources/HandySwiftUI/Extensions/ImageExt.swift +++ b/Sources/HandySwiftUI/Extensions/ImageExt.swift @@ -52,7 +52,7 @@ extension Image { else { return nil } return bitmapImage.representation( - using: .jpeg2000, + using: .jpeg, properties: [NSBitmapImageRep.PropertyKey.compressionFactor: NSNumber(value: compressionQuality)] ) } diff --git a/Tests/HandySwiftUITests/ImageExtTests.swift b/Tests/HandySwiftUITests/ImageExtTests.swift new file mode 100644 index 0000000..638f2ff --- /dev/null +++ b/Tests/HandySwiftUITests/ImageExtTests.swift @@ -0,0 +1,22 @@ +#if os(macOS) + import AppKit + import Testing + + @testable import HandySwiftUI + + struct ImageExtTests { + @Test + func jpegDataEncodesAsJPEG() throws { + let image = NSImage(size: NSSize(width: 8, height: 8), flipped: false) { rect in + NSColor.systemRed.setFill() + rect.fill() + return true + } + + let data = try #require(image.jpegData(compressionQuality: 0.8)) + + // Every JPEG file starts with the SOI marker followed by the next marker's 0xFF (JPEG 2000 starts with 0x00 0x00 0x00 0x0C) + #expect(Array(data.prefix(3)) == [0xFF, 0xD8, 0xFF]) + } + } +#endif