「Xamarin.Mac/CGImageをファイルに保存する」の版間の差分

提供: MonoBook
ナビゲーションに移動 検索に移動
imported>Administrator
(Xamarin.Mac/オフスクリーンに描画する)
38行目: 38行目:
  
 
== 関連項目 ==
 
== 関連項目 ==
*[[MonoMac/NSImageをファイルに保存する]]
+
* [[MonoMac/NSImageをファイルに保存する]]
*[[Xamarin.Mac/NSViewの描画内容をファイルに保存する]]
+
* [[Xamarin.Mac/NSViewの描画内容をファイルに保存する]]
*[[Xamarin.Mac/CoreGraphicsの基本的な使い方]]
+
* [[Xamarin.Mac/CoreGraphicsの基本的な使い方]]
*[[Xamarin.Mac/動画から静止画を抽出する]]
+
* [[Xamarin.Mac/動画から静止画を抽出する]]
*[[Xamarin.Mac/スクリーンキャプチャを撮る]]
+
* [[Xamarin.Mac/スクリーンキャプチャを撮る]]
*[[Xamarin.Mac/CGImageをNSImageに変換する]]
+
* [[Xamarin.Mac/CGImageをNSImageに変換する]]
*[[Xamarin.Mac/NSOpenGLViewを使う]]
+
* [[Xamarin.Mac/NSOpenGLViewを使う]]
*[[Xamarin.Mac/効果音を再生する]]
+
* [[Xamarin.Mac/効果音を再生する]]
 +
* [[Xamarin.Mac/オフスクリーンに図形を描画する]]
  
 
== 参考文献 ==
 
== 参考文献 ==

2017年8月24日 (木) 07:32時点における版

実装1

Xamarin.Mac 2.0系の場合はCGImageDestination.Createのまま。 Xamarin.Mac 1.0系の場合はCGImageDestination.FromUrlに変更する。

using System;
using Foundation;
using CoreGraphics;
using ImageIO;

namespace Library
{
    public static class CGImageExtensions
    {
        public static bool Save(this CGImage cgImage, string path, string typeIdentifier)
        {
            using (var url = NSUrl.FromFilename(path))
            using (var dst = CGImageDestination.Create(url, typeIdentifier, imageCount:1))
            {
                if (dst == null)
                {
                    return false;
                }

                dst.AddImage(cgImage);

                return dst.Close();
            }
        }
    }
}

引数typeIdentifierはMobileCoreServices.UTTypeに定義されている定数文字列群を指定する。 拡張子で自動判別するようにしてMobileCoreServices.UTTypeを無視するようにした方が直感的かもしれない。

        cgImage.Save(save, MobileCoreServices.UTType.PNG);

関連項目

参考文献