12
12

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

ImageSharp 基本操作

Posted at

サーバーサイドで System.Drawingを使ってはダメ、らしいのでいろいろ調査した結果、SixLabors/ImageSharp とやらがよさげ、らしい。

サーバーサイドで System.Drawingを使ってはダメ
http://qiita.com/kazuk/items/9758b90b2a480454215a

SixLabors/ImageSharp
https://github.com/SixLabors/ImageSharp

インストール

nugetで"SixLabors.ImageSharp"インストールする。現在のバージョンは1.0.0-beta0001なので、パッケージマネジャー画面では「プレリリースを含める」にチェックを入れないと表示されない。

基本操作

using SixLabors.ImageSharp; を追加しないと拡張メソッドが使えない。

画像のサイズを計測する

using SixLabors.ImageSharp;
using (Image<Rgba32> image = Image.Load("c:/var/file/sample.jpg"))
{
   var height = image.Height;
   var width  = image.Width;
}

画像を縮小する

サムネイル画像作成とか。
サンプルは バイト配列に結果を入れるけども Saveメソッドにファイル名を設定すれば直接ファイルに保存できる。

using SixLabors.ImageSharp;
byte[] content;
using (Image<Rgba32> image = Image.Load("c:/var/file/sample.jpg"))
{
    // 画像の操作をMutateメソッドで行う
    image.Mutate(x =>
    {
        x.Resize(image.Width / 4, image.Height / 4)
        ;
    });
    using (var stream = new MemoryStream())
    {
        var encoder = new SixLabors.ImageSharp.Formats.Jpeg.JpegEncoder();
        image.Save(stream, encoder);
        content = stream.GetBuffer();
    }
    // 結果画像を保存
}

SixLaborsのgithubに ImageSharp.Web ってのがあるけどよくわからん。

12
12
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
12
12

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?