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