web-dev-qa-db-ja.com

.NET Coreで画像を操作する

プロジェクトを.NET 4.5から.NET Core(ASP.NET Coreを使用)に更新しました。以前のバージョンでは、System.Drawingのビットマップオブジェクトを使用して画像のサイズを変更する非常に簡単なコードがいくつかありました。

System.Drawingはクロスプラットフォームではないため、.NET Coreでは使用できませんが、代わりに何を使用できますか?

これをグーグルで検索しましたが、何も見つかりません。私が見つけることができる唯一のものは this postであり、これにはコードがまったくありません。

58
Gillardo

免責事項:これは私のソフトウェアです。

.NET Core上で実行されるクロスプラットフォームの2Dグラフィックライブラリに取り組んでいます。現在はアルファ版ですが、すでに包括的な機能セットをサポートしています。

https://github.com/JimBobSquarePants/ImageSharp

使用例。

using (FileStream stream = File.OpenRead("foo.jpg"))
using (FileStream output = File.OpenWrite("bar.jpg"))
{
    Image image = new Image(stream);
    image.Resize(image.Width / 2, image.Height / 2)
         .Greyscale()
         .Save(output);
}
32
James South

公式(Microsoftから) System.Drawing.Common NuGetパッケージを使用できます。

28

Monoのソースに基づいた.NET CoreのSystem.Drawingの実装を見つけました:

NuGetパッケージは次の場所にあります。

.NET Coreアプリのproject.jsonで次のように参照できます:

{
  "dependencies": {
    "CoreCompat.System.Drawing": "1.0.0-beta006",
    ...
  },
}
16
mythz