Share via


Images

Browse sample. サンプルを参照する

.NET Multi-platform App UI (.NET MAUI) グラフィックスには、イメージの読み込み、保存、サイズ変更、ダウンサイズを行う機能が含まれています。 サポートされているイメージ形式は、基になるプラットフォームによって異なります。

画像は IImage 型で表現され、以下のプロパティを定義します。

  • float 型の Width は、イメージの幅を定義します。
  • float 型の Height は、イメージの高さを定義します。

イメージの読み込みと保存時に省略可能な ImageFormat 引数を指定できます。 ImageFormat 列挙型は、PngJpegGifTiffBmp の要素を定義します。 ただし、この引数は、基になるプラットフォームでイメージ形式がサポートされている場合にのみ使用されます。

Note

.NET MAUI には、2 つの異なる IImage インターフェイスが含まれています。 Microsoft.Maui.Graphics.IImage は、GraphicsView でグラフィックスの表示、操作、永続化に使用されます。 Microsoft.Maui.IImage は、Image コントロールを抽象化するインターフェイスです。

画像を読み込む

画像の読み込み機能は、PlatformImage クラスによって提供されます。 FromStream メソッドを使用してストリームから、または PlatformImage コンストラクターを使用してバイト配列から画像を読み込むことができます。

次の例は画像を読み込む方法を示しています。

using Microsoft.Maui.Graphics.Platform;
using System.Reflection;
using IImage = Microsoft.Maui.Graphics.IImage;

IImage image;
Assembly assembly = GetType().GetTypeInfo().Assembly;
using (Stream stream = assembly.GetManifestResourceStream("GraphicsViewDemos.Resources.Images.dotnet_bot.png"))
{
    image = PlatformImage.FromStream(stream);
}

if (image != null)
{
    canvas.DrawImage(image, 10, 10, image.Width, image.Height);
}

この例では、イメージがアセンブリから取得され、ストリームとして読み込まれ、表示されます。

重要

アセンブリに埋め込まれたイメージを読み込むには、イメージのビルド アクションが MauiImage ではなく Embedded Resource に設定されている必要があります。

イメージサイズの変更

画像のサイズは、Resize メソッドを使用して変更できます。このメソッドには、画像のターゲット サイズを表す float 型の width および height 引数が必要です。 Resize メソッドは、次の 2 つの省略可能な引数も受け入れます。

  • ターゲット ディメンションに合わせて画像のサイズを変更する方法を制御する ResizeMode 引数。
  • サイズ変更操作の実行後にソース画像を破棄するかどうかを制御する bool 引数。 この引数の既定値は false で、ソース画像が破棄されていないことを示します。

ResizeMode 列挙体は、画像のサイズをターゲット サイズに変更する方法を指定する次のメンバーを定義します。

  • Fit は、ターゲット サイズに合わせてイメージをレターボックス化します。
  • Bleed は、縦横比を維持しながら、ターゲット サイズに合わせてイメージをクリップします。
  • Stretch は、使用可能な領域を埋めるようにイメージを拡大します。 これにより、イメージの縦横比が変化する可能性があります。

イメージのサイズを変更する方法を次の例に示します。

using Microsoft.Maui.Graphics.Platform;
using System.Reflection;
using IImage = Microsoft.Maui.Graphics.IImage;

IImage image;
Assembly assembly = GetType().GetTypeInfo().Assembly;
using (Stream stream = assembly.GetManifestResourceStream("GraphicsViewDemos.Resources.Images.dotnet_bot.png"))
{
    image = PlatformImage.FromStream(stream);
}

if (image != null)
{
    IImage newImage = image.Resize(100, 60, ResizeMode.Stretch, true);
    canvas.DrawImage(newImage, 10, 10, newImage.Width, newImage.Height);
}

この例では、イメージはアセンブリから取得され、ストリームとして読み込まれます。 イメージは Resize メソッドを使用してサイズ変更されます。このメソッドの引数は新しいサイズを指定し、利用可能なスペースを満たすように画像を拡大する必要があります。 さらに、ソース画像が破棄されます。 サイズ変更されたイメージは、実際のサイズ (10,10) で描画されます。

画像をダウンサイズする

Downsize のオーバーロードのいずれかを使用して画像をダウンサイズできます。 最初のオーバーロードでは、画像の最大の幅または高さを表す単一の float 値が必要であり、縦横比を維持しながら画像をダウンサイズします。 2 番目のオーバーロードでは、画像の最大の幅と高さを表す 2 つの float 引数が必要です。

また、Downsize オーバーロードは、ダウンサイズ操作の実行後にソース画像を破棄するかどうかを制御する省略可能な bool 引数を受け入れます。 この引数の既定値は false で、これはソース画像が破棄されていないことを示します。

次の例は、画像をダウンサイズする方法を示しています。

using Microsoft.Maui.Graphics.Platform;
using System.Reflection;
using IImage = Microsoft.Maui.Graphics.IImage;

IImage image;
Assembly assembly = GetType().GetTypeInfo().Assembly;
using (Stream stream = assembly.GetManifestResourceStream("GraphicsViewDemos.Resources.Images.dotnet_bot.png"))
{
    image = PlatformImage.FromStream(stream);
}

if (image != null)
{
    IImage newImage = image.Downsize(100, true);
    canvas.DrawImage(newImage, 10, 10, newImage.Width, newImage.Height);
}

この例では、イメージはアセンブリから取得され、ストリームとして読み込まれます。 Downsize メソッドを使用してイメージを縮小し、引数で最大サイズを 100 ピクセルに設定する必要があることを指定します。 さらに、ソース画像が破棄されます。 その後、ダウンサイズされたイメージは実際のサイズ (10,10) で描画されます。

画像を保存する

SaveAsync メソッドと Save メソッドを使用して画像を保存できます。 各メソッドは、IImageStream に保存し、省略可能な ImageFormat と品質値を指定できます。

Note

Android と iOS の Save および SaveAsync メソッドでは、画像を JPEG および PNG 形式に保存できます。

次の例は画像の保存方法を示しています。

using Microsoft.Maui.Graphics.Platform;
using System.Reflection;
using IImage = Microsoft.Maui.Graphics.IImage;

IImage image;
Assembly assembly = GetType().GetTypeInfo().Assembly;
using (Stream stream = assembly.GetManifestResourceStream("GraphicsViewDemos.Resources.Images.dotnet_bot.png"))
{
    image = PlatformImage.FromStream(stream);
}

// Save image to a memory stream
if (image != null)
{
    IImage newImage = image.Downsize(150, true);
    using (MemoryStream memStream = new MemoryStream())
    {
        newImage.Save(memStream);
        // Reset destination stream position to 0 if saving to a file
    }
}

この例では、イメージはアセンブリから取得され、ストリームとして読み込まれます。 Downsize メソッドを使用して、画像がダウンサイズされています。その際、最大サイズを 150 ピクセルに設定することを引数で指定しています。 さらに、ソース画像が破棄されます。 その後、ダウンサイズされた画像がストリームに保存されます。

重要

このメソッドは Save 、ストリームの位置を 0 にリセットしません。 したがって、ストリームをファイルに保存する場合は、ファイルにコピーする前に、このメソッドを使用 Seek して宛先ストリームの位置を 0 にリセットする必要があります。