備忘録

備忘録

C# で ImageProcessorを使う

2023/01/18 追記

ImageProcessorの開発は停止されました。
代替としてImageSharpの利用を推奨します。

Ⅰ. はじめに

ImageProcessorは画像処理ライブラリです。
現時点で、2値化処理、エッジ検出、色反転、縮小、拡大、切り取り、等様々なフィルタ処理に対応しています。
http://imageprocessor.org/
https://github.com/JimBobSquarePants/ImageProcessor

Ⅱ. インストール

インストールはNuGetから行います。

Ⅲ. サンプルコード

ファイルからの読み込み

// ファイルの読み込み
byte[] source = File.ReadAllBytes("in.png");

using (MemoryStream inStream = new MemoryStream(source))
using (MemoryStream outStream = new MemoryStream())
using (ImageFactory imageFactory = new ImageFactory())
{
  imageFactory.Load(inStream)
              .Resize(new Size(100, 100)) // 100x100にリサイズ
              .Format(new PngFormat()) // PNG形式
              .DetectEdges(new Laplacian3X3EdgeFilter(), true) // エッジ検出
              .Filter(MatrixFilters.Invert) // 色反転
              .Quality(70) // クオリティ
              .Save(outStream);
  
   // ファイルに書き込み
   File.WriteAllBytes("out.png", outStream.ToArray());
}

Bitmap からの読み込み

var bmp = new Bitmap(width, height);
var image = new ImageFactory()
  .Load(bmp)
  .Rotate(90) // 時計回りに90度回転
  .Image;

bmp = new Bitmap(image);