いろいろ備忘録日記

主に .NET とか Go とか Flutter とか Python絡みのメモを公開しています。

.NET クラスライブラリ探訪-051 (System.Drawing.ImageConverter)(Imageからバイト配列の変換, バイト配列からImageへの変換)


よく忘れるので、個人的メモです。
イメージを扱う際にバイト配列に変換したり、その逆を行ったりする際に利用します。


利用するクラスは

System.Drawing.ImageConverter

で、Imageオブジェクトからバイト配列に変換する場合は

ConvertToメソッド

バイト配列からImageオブジェクトに変換する場合は

ConvertFrom

を利用します。


以下、サンプルです。

  #region ImageConverterSamples-01
  /// <summary>
  /// ImageConverterクラスのサンプルです。
  /// </summary>
  public class ImageConverterSamples01 : IExecutable
  {
    public void Execute()
    {
      //
      // Imageオブジェクトを取得.
      //
      Image image = Image.FromFile("database.png");
      
      //
      // Imageをバイト配列に変換.
      //   Imageから別のオブジェクトに変換する場合はConvertToを利用する.
      //
      ImageConverter converter = new ImageConverter();
      byte[] imageBytes = (byte[]) converter.ConvertTo(image, typeof(byte[]));
      
      //
      // バイト配列をImageに変換.
      //   バイト配列からImageオブジェクトに変換する場合はConvertFromを利用する.
      //
      Image image2 = (Image) converter.ConvertFrom(imageBytes);
      
      // 確認.
      Debug.Assert(image != null);
      Debug.Assert(imageBytes != null && imageBytes.Length > 0);
      Debug.Assert(image2 != null);
      
      //
      // [補足]
      // Imageオブジェクトをファイルとして保存する場合は以下のようにする.
      //
      //string desktopPath = Environment.GetFolderPath(Environment.SpecialFolder.Desktop);
      //string fileName    = @"Sample.png";
      //string filePath    = Path.Combine(desktopPath, fileName);
      //
      //using (Stream stream = File.Create(filePath))
      //{
      //  image.Save(filePath, System.Drawing.Imaging.ImageFormat.Png);
      //}
    }
  }
  #endregion

================================
過去の記事については、以下のページからご参照下さい。

サンプルコードは、以下の場所で公開しています。