ImageSharp
2D グラフィックス用のオープン ソース C# .NET ライブラリ
.NET API を使用して、PNG、JPEG、GIF、TIFF 画像の読み取り、書き込み、変更、サイズ変更、変換を行います。
ImageSharp は、C# アプリケーション内で画像ファイルを処理するための、シンプルでありながら非常に強力なクロスプラットフォームのオープン ソース ライブラリです。これは、画像の処理を可能にするように設計された、完全に管理されたクロスプラットフォームの 2D グラフィックス API です。 ImageSharp は、System.Drawing API の代替手段を提供することを目的としてリリースされたオープン ソースの画像処理ライブラリです。
この API は包括的で、画像処理の高度なアルゴリズムをサポートしています。 APIは年々改良され、より高度な画像処理に対応しています。その唯一の依存関係は .NET 自体であるため、移植性が非常に高くなります。 API には、画像のサイズ変更、画像のエンコードとデコード、画像メタデータのみのデコード、画像の複製、画像への透かしの描画、パスに沿ったテキストの描画などの高度な機能のサポートが含まれています。
ImageSharp の使用を開始する
NuGet で安定版リリースを利用できます。ベータ版の場合は、[プレリリースを含める] スイッチが有効になっていることを確認してください。開発リリースは MyGet から入手できます。
NuGet 経由で ImageSharp をインストールする
Install-Package SixLabors.ImageSharp -Version number
画像のサイズを変更する C# API
ImageSharp ライブラリを使用すると、C# .NET プログラマーは独自の .NET アプリケーション内で画像のサイズを変更できます。画像のサイズを変更するには、ターゲット画像のピクセルを生成して反復し、ソース画像の領域をサンプリングして、各ピクセルに実装する色を選択するプロセスが必要です。 Bicubic、Hermite、Box、CatmullRom、Lanczos2 など、画像を処理する際のアルゴリズムを簡単に設定できます。基本的なサイズ変更操作とは別に、ImageSharp はより高度な機能も提供します。
C#APIによる画像のサイズ変更
// Load File
using (Image image = Image.Load("fileformat.jpg"))
{
// Resize file
image.Mutate(x => x
.Resize(image.Width / 2, image.Height / 2)
.greyscale());
// Save
image.Save("fileformat_out.jpg");
}
画像に透かしを描画
通常、ユーザーは画像を許可なく使用できないように、大きな透かしを重ねて画像を保護します。 ImageSharp ライブラリは、C++ アプリケーション内の画像に透かしを追加するためのサポートを提供します。まず、フォント ファミリーが必要です。システム フォント ストアから簡単に入手できます。画像の上にテキストを描画し、不透明度 50% で灰色にします。
パスに沿ってテキストを描画 & イメージに効果を適用
ImageSharp ライブラリは、C# .NET 開発者がパスの輪郭に従っていくつかのテキストを描画することができます。 フォントコレクションを作成することをお勧めします。 まず、パスに沿って描画されたベクトルのセットとしてテキストを生成してみましょう。 パスを描画した後は、テキストが次のことになっているかを見ることができます。 ImageSharp API はまた、形状内でのみ画像にさまざまな効果を適用することができます。
画像に効果を適用
namespace CustomImageProcessor
{
static class Program
{
static void Main(string[] args)
{
System.IO.Directory.CreateDirectory("output");
using (Image image = Image.Load("fb.jpg"))
{
var outerRadii = Math.Min(image.Width, image.Height) / 2;
var star = new Star(new PointF(image.Width / 2, image.Height / 2), 5, outerRadii / 2, outerRadii);
using (var clone = image.Clone(p =>
{
p.GaussianBlur(15); // apply the effect here you and inside the shape
}))
{
clone.Mutate(x => x.Crop((Rectangle)star.Bounds));
var brush = new ImageBrush(clone);
// cloned image with the effects applied
image.Mutate(c => c.Fill(brush, star));
}
image.Save("output/fb.png");
}
}
}
}