「Xamarin.Macで画素配列からCGImageを生成する」の版間の差分

imported>Administrator
ページの作成:「勉強がてらJPEGのコーデックをC#で実装してみているのだが、デコード済みの画素データが格納されたbyte配列からCGImageを生成し...」
 
 
(他の1人の利用者による、間の5版が非表示)
43行目: 43行目:
             return cgImage;
             return cgImage;
         }
         }
</source>
拾ってきたLennaの画像は正常にデコードできたようだ。
画素の入ったbyte配列をCGDataProviderクラスで[[ラップ]]してCGImageの[[コンストラクタ]]に渡すのがポイント。
<source>
            var error = "";
            var header = new JlsParameters();
            var dst = new MemoryStream();
            var path = Path.Combine(NSBundle.MainBundle.BundlePath, "Contents", "Resources", "lena24b.jpg");
            var src = new FileStream(path, FileMode.Open, FileAccess.Read, FileShare.None);
            var result = Jpeg.Decode(dst, src, header, out error);
            Console.WriteLine(header);
            dst.Seek(0, SeekOrigin.Begin);
            var buf = dst.ToArray();
            // 画素データ
            var data = new CGDataProvider(buf);
            var colorspace = CGColorSpace.CreateDeviceRGB();
            var cgImage = new CGImage(
                header.width,
                header.height,
                header.bitsPerSample,
                header.bitsPerSample * header.components,
                header.components * header.width,
                colorspace,
                CGBitmapFlags.ByteOrderDefault,
                data,
                decode: null,
                shouldInterpolate: false,
                intent: CGColorRenderingIntent.Default);
            var nsImage = new NSImage(cgImage, new CGSize(cgImage.Width, cgImage.Height));
</source>
</source>


97行目: 131行目:


== 関連項目 ==
== 関連項目 ==
* [[Xamarin.Mac/CGImageをNSImageに変換する]]
* [[Xamarin.Mac/CGImageをファイルに保存する]]


== 参考文献 ==
== 参考文献 ==