Hatena::ブログ(Diary)

tabizouの日記

2018-05-14

Windows 10 Pro_x64 + CS2017 + Magick.NET をもう少し試してみる

11:19

Windows 10 Pro_x64 + CS2017 + Magick.NET をもう少し試してみる

 

VB2017で少し試そうと思ったけど、CSの方がいろんなサンプルが多そうなんで切り替える

参考にしたのは以下のサイト(ドキュメントのサンプル)

Magick.NET/Documentation/

PictureBox Class

ファイルをバイト型配列に読み込む、バイト型配列をファイルに書き込む

Jpegファイルとメモリストリームの操作

Magick.NETを使って、.NETがサポートしていない形式の画像を読み込む

Overview of Ghostscript

Ghostscript Downloads

より gs923w32.exe をDLしてインストールする(Magick.NET が 32bit なので)

インストール先は C:\Dev\tool\gs\gs9.23

 

適当なイメージが無いので、こちら使用させもらう

製品情報天秤のLa DEA。戦女神MEMORIA のパケ絵(ロカでも良かったんだけどな)

 

Magick.NET-Q16-x86 7.4.5より

ツール

 -> NuGet パッケージマネージャー

  -> パッケージマネージャーコンソールを起動して

PM> Install-Package Magick.NET-Q16-x86

Reading images

Resize image

Convert PDF

・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");
    }

トラックバック - http://d.hatena.ne.jp/tabizou/20180514/1526264365