メインメニューを開く

「Xamarin.Mac/CGImageをNSImageに変換する」の版間の差分

< Xamarin.Mac
imported>Administrator
imported>Administrator
 
(3人の利用者による、間の3版が非表示)
2行目: 2行目:
 
CGImageを直接的に[[ファイル]]に保存することは出来るが、[[Xamarin.Mac]]のClass APIプロジェクト及び[[MonoMac]]プロジェクトではMobileCoreServices.UTType列挙体を自前で用意しないとならないなどかなりかなり面倒である。そこでCGImageをNSImageに変換して[[ファイル]]に保存してやった方が楽ではないかと考えた。
 
CGImageを直接的に[[ファイル]]に保存することは出来るが、[[Xamarin.Mac]]のClass APIプロジェクト及び[[MonoMac]]プロジェクトではMobileCoreServices.UTType列挙体を自前で用意しないとならないなどかなりかなり面倒である。そこでCGImageをNSImageに変換して[[ファイル]]に保存してやった方が楽ではないかと考えた。
  
==実装==
+
== 実装 ==
考えるまでもなくNSImageのコンストラクタにあった。
+
考えるまでもなくNSImageのコンストラクタにあった。MacのNSImageはiOSのUIImageと似たようなものだが、Macではコンストラクタの引数にサイズ指定が必須となっている点が異なる。
 
<source lang="csharp">
 
<source lang="csharp">
     var nsImage = new NSImage(cgImage, new SizeF(cgImage.Width, cgImage.Height));
+
     var nsImage = new NSImage(cgImage, new CGSize(cgImage.Width, cgImage.Height));
 
</source>
 
</source>
  
 
ただしスクリーンキャプチャをパラパラアニメ風に連射で撮ってみたことろ変換に伴う負荷(上記コード部分の負荷)が結構高い。やっぱりCGImageは面倒でも直接的に保存した方がいいかもしれない。
 
ただしスクリーンキャプチャをパラパラアニメ風に連射で撮ってみたことろ変換に伴う負荷(上記コード部分の負荷)が結構高い。やっぱりCGImageは面倒でも直接的に保存した方がいいかもしれない。
  
==関連項目==
+
== 関連項目 ==
 
* [[MonoMac/NSImageをファイルに保存する]]
 
* [[MonoMac/NSImageをファイルに保存する]]
 
* [[Xamarin.Mac/CGImageをファイルに保存する]]
 
* [[Xamarin.Mac/CGImageをファイルに保存する]]
 
* [[Xamarin.Mac/スクリーンキャプチャを撮る]]
 
* [[Xamarin.Mac/スクリーンキャプチャを撮る]]
 
* [[Xamarin.Mac/動画から静止画を抽出する]]
 
* [[Xamarin.Mac/動画から静止画を抽出する]]
 +
* [[Xamarin.Mac/画素配列からCGImageを生成する]]
 +
* [[Xamarin.Mac/NSImageを回転させる]]
  
 
==参考文献==
 
==参考文献==
21行目: 23行目:
 
{{stub}}
 
{{stub}}
  
[[category:Xamarin.Mac]]
+
[[category: MonoMac]]
[[category:MonoMac]]
+
[[category: Xamarin.Mac]]
 +
[[category: Core Graphics]]

2017年11月1日 (水) 07:13時点における最新版

目次

概要編集

CGImageを直接的にファイルに保存することは出来るが、Xamarin.MacのClass APIプロジェクト及びMonoMacプロジェクトではMobileCoreServices.UTType列挙体を自前で用意しないとならないなどかなりかなり面倒である。そこでCGImageをNSImageに変換してファイルに保存してやった方が楽ではないかと考えた。

実装編集

考えるまでもなくNSImageのコンストラクタにあった。MacのNSImageはiOSのUIImageと似たようなものだが、Macではコンストラクタの引数にサイズ指定が必須となっている点が異なる。

    var nsImage = new NSImage(cgImage, new CGSize(cgImage.Width, cgImage.Height));

ただしスクリーンキャプチャをパラパラアニメ風に連射で撮ってみたことろ変換に伴う負荷(上記コード部分の負荷)が結構高い。やっぱりCGImageは面倒でも直接的に保存した方がいいかもしれない。

関連項目編集

参考文献編集