バーラル @ ウィキ

C#で画像処理を導入!?

C#で画像処理するまでの導入編


何を隠そうとあるすばらしいサイトを見ながらコーディングしました!勉強になりました。本当にありがとうございます!!!!
参考したすばらしいサイト→初めてのC#~覚え書き~
あれぇ?コメントまで丸パクリ・・・というかコピペ・・・さーせん><

見た目はこんな感じ↓


ソースはこんな感じ↓(長いけどとっても簡単★)

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Drawing.Imaging;  // for ImageFormat
namespace お絵かき用
{
   public partial class Form1 : Form
   {
       public Form1()
       {
           InitializeComponent();
       }
       private void 白紙にするToolStripMenuItem_Click(object sender, EventArgs e)
       {
       }
       private void Form1_Load(object sender, EventArgs e)
       {
       }
       private void 線ToolStripMenuItem_Click(object sender, EventArgs e)
       {
           //Graphicsオブジェクトの作成
           Graphics g = pictureBox1.CreateGraphics();
           //(0,0)-(100,100)に、幅1の黒い線を引く
           g.DrawLine(Pens.Black, 0, 0, 100, 100);
           //リソースを開放する
           g.Dispose();
       }
       private void button1_Click(object sender, EventArgs e)
       {
           try
           {
               pictureBox1.Image = Image.FromFile(textBox1.Text);
           }
           catch
           {
               MessageBox.Show("指定が正しくありません!");
           }
           // Note: 表示位置は、SizeMode プロパティで設定する。
           //       Normal       = 左上隅に表示(既定値)
           //       CenterImage  = 中央  に表示
           //       AutoSize     = 左上隅に表示(PictureBox の背景色は表示しない)
           //       StretchImage = 画像を伸縮し、PictureBox の領域いっぱいに表示
           // Note: PictureBox は、BMP/GIF/JPEG/PNG/TIFF/ICON 形式をサポートしている。
       }
       private void button4_Click(object sender, EventArgs e)
       {
           try
           {
               label1.Text = "これは\nラベル1の\nテキストです。";
               label1.Image = Image.FromFile(textBox2.Text);
           }
           catch
           {
               MessageBox.Show("指定が正しくありません!");
           }
           // Note: 表示位置は、ImageAlign プロパティで設定する。
           //       MiddleCenter = 中央  に表示(既定値)
           //       TopLeft      = 左上隅に表示
           // Note: Label は、BMP/GIF/JPEG/PNG/TIFF/ICON 形式をサポートしている
       }
       private void button2_Click(object sender, EventArgs e)
       {
           //Bitmap bmp = new Bitmap("D:\\TMP\\orchid_small.jpg");
           Bitmap bmp = new Bitmap(textBox1.Text);
           string format = bmp.RawFormat.ToString();  // bmp の画像形式を文字列で取得
           string ext =                                // 画像の拡張子を求める
               (format.IndexOf("b96b3cab-0728-11d3-9d7b-0000f81ef32e") != -1) ? "bmp" :
               (format.IndexOf("b96b3cb0-0728-11d3-9d7b-0000f81ef32e") != -1) ? "gif" :
               (format.IndexOf("b96b3caf-0728-11d3-9d7b-0000f81ef32e") != -1) ? "png" :
               (format.IndexOf("b96b3cae-0728-11d3-9d7b-0000f81ef32e") != -1) ? "jpg" :
               (format.IndexOf("b96b3cb1-0728-11d3-9d7b-0000f81ef32e") != -1) ? "tif" :
               (format.IndexOf("b96b3cb5-0728-11d3-9d7b-0000f81ef32e") != -1) ? "ico" :
               "xxx";
           label2.Text ="画像形式"+ ext;
       }
       private void button5_Click(object sender, EventArgs e)
       {
           //Bitmap bmp = new Bitmap("D:\\TMP\\orchid_small.jpg");
           Bitmap bmp = new Bitmap(textBox2.Text);
           string format = bmp.RawFormat.ToString();  // bmp の画像形式を文字列で取得
           string ext =                                // 画像の拡張子を求める
               (format.IndexOf("b96b3cab-0728-11d3-9d7b-0000f81ef32e") != -1) ? "bmp" :
               (format.IndexOf("b96b3cb0-0728-11d3-9d7b-0000f81ef32e") != -1) ? "gif" :
               (format.IndexOf("b96b3caf-0728-11d3-9d7b-0000f81ef32e") != -1) ? "png" :
               (format.IndexOf("b96b3cae-0728-11d3-9d7b-0000f81ef32e") != -1) ? "jpg" :
               (format.IndexOf("b96b3cb1-0728-11d3-9d7b-0000f81ef32e") != -1) ? "tif" :
               (format.IndexOf("b96b3cb5-0728-11d3-9d7b-0000f81ef32e") != -1) ? "ico" :
               "xxx";
           label3.Text = "画像形式" + ext;
       }
       private void button3_Click(object sender, EventArgs e)
       {
           // 画像形式の変換&保存★PictureBoxの変換&保存
           ImageFormat image_format1;
           switch (comboBox1.Text)
           {
               case "Bmp": image_format1 = ImageFormat.Bmp; break;
               case "Gif": image_format1 = ImageFormat.Gif; break;
               case "Jpeg": image_format1 = ImageFormat.Jpeg; break;
               case "Png": image_format1 = ImageFormat.Png; break;
               case "Tiff": image_format1 = ImageFormat.Tiff; break;
               default: image_format1 = ImageFormat.Bmp; break;
           }
           pictureBox1.Image.Save(
               textBox1.Text + "." + comboBox1.Text,  // 保存するファイル名
               image_format1);                       // 保存する画像形式
           // Note: Image.Save() は、ファイルを強制上書きモードで保存する。
       }
       private void button6_Click(object sender, EventArgs e)
       {
           // 画像形式の変換&保存★ラベルの変換&保存
           ImageFormat image_format2;
           switch (comboBox2.Text)
           {
               case "BMP": image_format2 = ImageFormat.Bmp; break;
               case "GIF": image_format2 = ImageFormat.Gif; break;
               case "JPEG": image_format2 = ImageFormat.Jpeg; break;
               case "PNG": image_format2 = ImageFormat.Png; break;
               case "TIFF": image_format2 = ImageFormat.Tiff; break;
               default: image_format2 = ImageFormat.Bmp; break;
           }
           label1.Image.Save(
               textBox2.Text + "." + comboBox2.Text,  // 保存するファイル名
               image_format2);                       // 保存する画像形式
           // Note: Image.Save() は、ファイルを強制上書きモードで保存する。
           //画像の保存にはusing System.Drawing.Imaging ;  // for ImageFormatが必要!
       }
       private void button9_Click(object sender, EventArgs e)
       {
           openFileDialog1.ShowDialog();
       }
       private void openFileDialog1_FileOk(object sender, CancelEventArgs e)
       {
           textBox1.Text = openFileDialog1.FileName;
       }
       private void button10_Click(object sender, EventArgs e)
       {
           /*
            *ソリューションエクスプローラで、追加 → 既存項目の追加  を選択すると、ダイアログ
            *が開くので、そこで、埋め込みたいファイル "image1.jpg" を選択する(このファイルは、
            *プロジェクト フォルダへ自動的にコピーされる)。
            *次に、このプロパティのページを開き、ビルドアクションを「埋め込まれたリソース」に
            *設定する。
            */
           Bitmap bit_map1 = new Bitmap(GetType(), "scene.jpg");  // データを取り出す
           pictureBox1.Image = bit_map1;                          // 画像の表示
           label1.Image = bit_map1;
       }
       private void button11_Click(object sender, EventArgs e)
       {
           // 読み込む画像の格納用ビットマップの宣言
           Bitmap bit_map1 = null;
           try
           {
               // textBox1 で指定された画像ファイルをロード
               bit_map1 = new Bitmap(textBox2.Text);
           }
           catch
           {
               MessageBox.Show("ファイルがNGです!", Application.ProductName);
               return;
           }
           int sizeX = bit_map1.Width;
           int sizeY = bit_map1.Height;
           // 加工した画像の格納用ビットマップの宣言(32bitカラーピクセル形式)
           Bitmap bit_map2 = new Bitmap(sizeX, sizeY, PixelFormat.Format32bppArgb);
           for (int Y = 0; Y < sizeY; Y++)
           {
               for (int X = 0; X < sizeX; X++)
               {
                   int P = bit_map1.GetPixel(X, Y).ToArgb();    // ピクセルデータの取得
                   if (radioButton2.Checked) P ^= 0xffffff;     // 反転色の計算
                   bit_map2.SetPixel(X, Y, Color.FromArgb(P));  // ピクセルデータの設定
               }
           }
           label1.Image = bit_map2;
       }
       private void button12_Click(object sender, EventArgs e)
       {
           label1.Image = new Bitmap(label1.Width, label1.Height);
           Graphics g = Graphics.FromImage(label1.Image);
           g.ResetTransform();                 // 各変換設定値のリセット
           g.ScaleTransform(0.7F, 0.7F);       // X軸とY軸の拡大率の設定
           g.DrawImage(Image.FromFile(textBox2.Text), 30, 30);  // 描画(label1 を元に 指定した座標へ)
       }
   }
}


最終更新:2011年01月19日 23:05