CGImageDestination::Close is a non-obvious API for saving images
- Dominant language
- C#
- Stars
- 2.9k
- Forks
- 576
- Avg merge
- 2d 13h
- Merged PRs (30d)
- 96
Description
# Sample to Reproduce
```cs
CGImage img = assetImageGenerator.CopyCGImageAtTime(...);
NSUrl outputUrl = NSUrl.FromFilename(...);
//...
using (var imageDestination = CGImageDestination.Create(outputUrl, UTType.PNG, 1))
{
imageDestination.AddImage(img);
}
```
### Expected Behavior
Image will be saved, `imageDestination` disposed.
### Actual Behavior
Image won't be saved.
Need manually call [.Close()](https://github.com/xamarin/xamarin-macios/blob/main/src/ImageIO/CGImageDestination.cs#L298-L303) method to make `CGImageDestinationFinalize`:
```cs
using (var imageDestination = CGImageDestination.Create(fileUrl, UTType.PNG, 1))
{
imageDestination.AddImage(img);
imageDestination.Close();
}
// or
var imageDestination = CGImageDestination.Create(fileUrl, UTType.PNG, 1);
imageDestination.AddImage(img);
imageDestination.Close();
```
Looks like [tests](https://github.com/xamarin/xamarin-macios/blob/main/tests/monotouch-test/ImageIO/ImageDestinationTest.cs#L96-L98) don't work in reality.
### Environment
```
=== Visual Studio Community 2019 for Mac ===
Version 8.6.5 (build 23)
Installation UUID: 718c9426-9b34-4dad-a550-66605f1e5527
GTK+ 2.24.23 (Raleigh theme)
Xamarin.Mac 6.18.0.23 (d16-6 / 088c73638)
Package version: 610000104
=== Mono Framework MDK ===
Runtime:
Mono 6.10.0.104 (2019-12/5d03a6fe116) (64-bit)
Package version: 610000104
=== Roslyn (Language Service) ===
3.6.0-3.20210.9+4eafdcb1bcbd8d3573f2ba6065e56d9b9ce4f8a3
=== NuGet ===
Version: 5.6.0.6591
=== .NET Core SDK ===
SDK: /usr/local/share/dotnet/sdk/3.1.301/Sdks
SDK Versions:
3.1.301
3.1.300
3.1.202
3.1.200
3.1.102
MSBuild SDKs: /Library/Frameworks/Mono.framework/Versions/6.10.0/lib/mono/msbuild/Current/bin/Sdks
=== .NET Core Runtime ===
Runtime: /usr/local/share/dotnet/dotnet
Runtime Versions:
3.1.5
3.1.4
3.1.2
2.1.19
2.1.18
2.1.17
2.1.16
=== Xamarin.Profiler ===
'/Applications/Xamarin Profiler.app' not found
=== Updater ===
Version: 11
=== Apple Developer Tools ===
Xcode 11.5 (16139)
Build 11E608c
=== Xamarin.Android ===
Version: 10.3.1.4 (Visual Studio Community)
Commit: xamarin-android/d16-6/3a10de9
Android SDK: /Users/yauhenipakala/Library/Developer/Xamarin/android-sdk-macosx
Supported Android versions:
7.0 (API level 24)
8.0 (API level 26)
8.1 (API level 27)
SDK Tools Version: 26.1.1
SDK Platform Tools Version: 29.0.6
SDK Build Tools Version: 30.0.0 rc2
Build Information:
Mono: 165f4b0
Java.Interop: xamarin/java.interop/d16-6@2cab35c
ProGuard: xamarin/proguard/master@905836d
SQLite: xamarin/sqlite/3.31.1@49232bc
Xamarin.Android Tools: xamarin/xamarin-android-tools/d16-6@bfb66f3
=== Microsoft OpenJDK for Mobile ===
Java SDK: /Users/yauhenipakala/Library/Developer/Xamarin/jdk/microsoft_dist_openjdk_1.8.0.25
1.8.0-25
Android Designer EPL code available here:
https://github.com/xamarin/AndroidDesigner.EPL
=== Android SDK Manager ===
Version: 16.6.0.50
Hash: 5901879
Branch: remotes/origin/d16-6
Build date: 2020-06-10 22:42:50 UTC
=== Android Device Manager ===
Version: 16.6.0.96
Hash: 6e8b80b
Branch: remotes/origin/d16-6
Build date: 2020-06-10 22:43:28 UTC
=== Xamarin Designer ===
Version: 16.6.0.329
Hash: d4f8bcd13
Branch: remotes/origin/d16-6
Build date: 2020-04-24 02:16:02 UTC
=== Xamarin.Mac ===
Version: 6.18.2.1 (Visual Studio Community)
Hash: 29c4ea731
Branch: d16-6
Build date: 2020-05-26 17:03:04-0400
=== Xamarin.iOS ===
Version: 13.18.2.1 (Visual Studio Community)
Hash: 29c4ea731
Branch: d16-6
Build date: 2020-05-26 17:03:05-0400
=== Build Information ===
Release ID: 806050023
Git revision: 5289d413b99fddfc20b4ecf3e445ccb822213427
Build date: 2020-06-18 12:08:30-04
Build branch: release-8.6
Xamarin extensions: 5289d413b99fddfc20b4ecf3e445ccb822213427
=== Operating System ===
Mac OS X 10.15.5
Darwin 19.5.0 Darwin Kernel Version 19.5.0
Tue May 26 20:41:44 PDT 2020
root:xnu-6153.121.2~2/RELEASE_X86_64 x86_64
=== Enabled user installed extensions ===
BinObjCleaner 1.5
MonoDevelop.TouchBar 1.0.3
DT.VS4Mac.SolutionName 1.2
Code Coverage 2.0.1-alpha
```
### Example Project (If Possible)
https://github.com/wcoder/Xamarin-Video-Thumbnail-Demo
Contributor guide
No contributing guide indexed for this repository
Assessment
This issue has not been assessed yet.