サーバーサイドで 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 ってのがあるけどよくわからん。