Windows 10 Pro_x64 + CS2017 + Magick.NET をもう少し試してみる
Windows 10 Pro_x64 + CS2017 + Magick.NET をもう少し試してみる
VB2017で少し試そうと思ったけど、CSの方がいろんなサンプルが多そうなんで切り替える
参考にしたのは以下のサイト(ドキュメントのサンプル)
ファイルをバイト型配列に読み込む、バイト型配列をファイルに書き込む
Magick.NETを使って、.NETがサポートしていない形式の画像を読み込む
より gs923w32.exe をDLしてインストールする(Magick.NET が 32bit なので)
インストール先は C:\Dev\tool\gs\gs9.23
適当なイメージが無いので、こちら使用させもらう
製品情報天秤のLa DEA。戦女神MEMORIA のパケ絵(ロカでも良かったんだけどな)
ツール
-> NuGet パッケージマネージャー
-> パッケージマネージャーコンソールを起動して
PM> Install-Package Magick.NET-Q16-x86
・PictureBoxを追加
・ボタンを適当に追加
以下を追加
using System.IO; using ImageMagick;
サンプルコード
・追加:サイズを変更して、pictureBox に表示する
・追加:PDFに変換する(要 Ghostscript)
バイナリを埋め込んで作ってるだけですが
※using 使うべきなんだけどなぁ・・・
private void button1_Click(object sender, EventArgs e) { pictureBox1.ImageLocation = @"C:\Dev\code\vs2017\Vb0001\eudv015s.jpg"; } private void button2_Click(object sender, EventArgs e) { MagickImageInfo info = new MagickImageInfo(@"C:\Dev\code\vs2017\Vb0001\eudv015s.jpg"); Console.WriteLine(info.Width); Console.WriteLine(info.Height); Console.WriteLine(info.ColorSpace); Console.WriteLine(info.Format); Console.WriteLine(info.Density.X); Console.WriteLine(info.Density.Y); Console.WriteLine(info.Density.Units); } private void button3_Click(object sender, EventArgs e) { Byte[] bs = System.IO.File.ReadAllBytes(@"C:\Dev\code\vs2017\Vb0001\eudv015s.jpg"); MagickImageInfo info = new MagickImageInfo(bs); // Console.WriteLine は上記と同じ } private void button4_Click(object sender, EventArgs e) { Byte[] bs = System.IO.File.ReadAllBytes(@"C:\Dev\code\vs2017\Vb0001\eudv015s.jpg"); MemoryStream ms = new MemoryStream(bs); MagickImageInfo info = new MagickImageInfo(bs); // Console.WriteLine は上記と同じ } // メモリに取込んだイメージのサイズを2倍にする private void button5_Click(object sender, EventArgs e) { Byte[] bs = System.IO.File.ReadAllBytes(@"C:\Dev\code\vs2017\Vb0001\eudv015s.jpg"); MagickImage image = new MagickImage(bs); MagickGeometry size = new MagickGeometry(image.Width * 2, image.Height * 2); size.IgnoreAspectRatio = true; image.Resize(size); image.Format = ImageMagick.MagickFormat.Bmp; System.Drawing.Bitmap bmp = image.ToBitmap(); pictureBox1.Image = bmp; // Console.WriteLine は上記と同じ } // %PDF-1.3 に変更されるようだ private void button6_Click(object sender, EventArgs e) { Byte[] bs = System.IO.File.ReadAllBytes(@"C:\Dev\code\vs2017\Vb0001\eudv015s.jpg"); MagickImage image = new MagickImage(bs); image.Write(@"C:\Dev\code\vs2017\Vb0001\eudv015s.PDF"); }