「SkiaSharpでSKImageをファイルに保存する」の版間の差分

提供:MonoBook
imported>Administrator
編集の要約なし
imported>Administrator
 
(同じ利用者による、間の1版が非表示)
5行目: 5行目:
SKCanvas canvas = new SKCanvas(bitmap);
SKCanvas canvas = new SKCanvas(bitmap);
canvas.Clear(SKColors.Blue);
canvas.Clear(SKColors.Blue);
var image = SKImage.FromBitmap(bitmap);
var image = SKImage.FromBitmap(bitmap);


16行目: 17行目:
== 備考 ==
== 備考 ==
=== 利用できる保存フォーマット ===
=== 利用できる保存フォーマット ===
SKImage.Encodeメソッドに指定するSKEncodedImageFormat列挙体には色々なフォーマットが定義されているが実際に使えるのは「[[PNG]]」「[[JPEG]]」「[[WEBP]]」の三種類だけのようだ。
SKImage.Encodeメソッドに指定するSKEncodedImageFormat列挙体には色々なフォーマットが定義されているが、このうち実際に使えるのは「[[PNG]]」「[[JPEG]]」「[[WEBP]]」の三種類だけのようだ。
{| class="wikitable"
{| class="wikitable"
|-
|-

2018年2月24日 (土) 02:46時点における最新版

SkiaSharpでSKImageやSKBitmapをファイルに保存する。

SKBitmap bitmap = new SKBitmap(512, 512, isOpaque: false);
SKCanvas canvas = new SKCanvas(bitmap);
canvas.Clear(SKColors.Blue);

var image = SKImage.FromBitmap(bitmap);

using (var stream = File.Create("/tmp/test.png"))
{
    var data = image.Encode(SKEncodedImageFormat.Png,100);
    data.SaveTo(stream);
}

備考[編集 | ソースを編集]

利用できる保存フォーマット[編集 | ソースを編集]

SKImage.Encodeメソッドに指定するSKEncodedImageFormat列挙体には色々なフォーマットが定義されているが、このうち実際に使えるのは「PNG」「JPEG」「WEBP」の三種類だけのようだ。

フォーマット 対応状況
Bmp NG
Gif NG
Ico NG
Jpeg OK
Png OK
Wbmp NG
Webp OK
Pkm NG
Ktx NG
Astc NG
Dng NG

上記は以下のようなコードで試した。新バージョンで変更になっているかもしれないので逐次確認すること。

SKImage image = SKImage.FromBitmap(bitmap);

foreach (SKEncodedImageFormat format in Enum.GetValues(typeof(SKEncodedImageFormat)))
{
    var data = image.Encode(format, 100);
    if (data == null)
    {
        Console.WriteLine(format.ToString() + ": NG");
    }
    else
    {
        Console.WriteLine(format.ToString() + ": OK");
    }
}

PNGの圧縮レベル[編集 | ソースを編集]

本家Skiaの方のソースコードを見るとPNGについては圧縮レベルは「3」の固定値であり現状では指定できない模様。これも新バージョンで変更になるかもしれないので逐次確認すること。