BMPモノクロ画像の結合
- 題名: BMPモノクロ画像の結合
- 著者: たろう
- 日時: 2011/09/30 23:05:06
- ID: 29128
- この記事の返信元:
- この記事への返信:
- ツリーを表示
- 題名: Re[1]: BMPモノクロ画像の結合
- 著者: iti
- 日時: 2011/10/01 14:22:24
- ID: 29129
- この記事の返信元:
- この記事への返信:
- ツリーを表示
- 題名: Re[2]: BMPモノクロ画像の結合
- 著者: たろう
- 日時: 2011/10/03 23:36:17
- ID: 29135
- この記事の返信元:
- この記事への返信:
- ツリーを表示
- 題名: Re[3]: BMPモノクロ画像の結合
- 著者: iti
- 日時: 2011/10/04 13:14:39
- ID: 29137
- この記事の返信元:
- この記事への返信:
- ツリーを表示
分類:[.NET]
BMPモノクロ2色の画像を読み込んで、固定サイズの画像の中央に配置して
BMPモノクロ2色で保存したいのですが、思うようにいかずご教授いただけ
ないでしょうか?
・画像1…入力ファイル(BMPモノクロ2色)
・画像2…1000pix×1000pixの画像
・画像3…画像1と画像2を結合したもの(BMPモノクロ2色で保存したい)
下記のようなロジックを作成しましたが、作成された画像が24bitのBMP
で作成されてしまいます。
画像2を作成する際にpixellFormatを指定していない事が原因と考えていますが
PixelFormat.Format1bppIndexed としてしまいますと、
「インデックス付きのピクセル形式をもつイメージからグラフィックス オブジェクトを作成することはできません。」とエラーが出てしまいます。
-------------------------------------------
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Drawing;
using System.Drawing.Imaging;
using System.Windows.Forms;
namespace Sample01
{
class Program
{
static void Main(string[] args)
{
//画像1(BMPモノクロ2色)
PictureBox pictureBox1 = new PictureBox();
pictureBox1.Image = System.Drawing.Image.FromFile(@"C:\\sample.bmp");
Rectangle rect = new Rectangle(0 , 0 , pictureBox1.Image.Width , pictureBox1.Image.Height);
//画像2(1000×1000)
Bitmap bitmap = new Bitmap(1000, 1000);
Graphics gfx = Graphics.FromImage(bitmap);
//画像2を白で塗りつぶす
Region rgn = new Region(new Rectangle(0 , 0 , 1000 , 1000));
gfx.FillRegion(Brushes.White, rgn);
//画像2の中央に画像1を張り付ける
gfx.DrawImage(pictureBox1.Image, new Rectangle((1000 - rect.Width) / 2, (1000 - rect.Height) / 2, rect.Width, rect.Height), rect, GraphicsUnit.Pixel);
//リソース解放
gfx.Dispose();
//結合後の画像を保存する。
PictureBox pictureBox2 = new PictureBox();
pictureBox2.Image = bitmap;
pictureBox2.Invalidate();
//BMP形式で保存
pictureBox2.Image.Save("C:\\temp\\Save1.bmp" , System.Drawing.Imaging.ImageFormat.Bmp);
}
}
}
-------------------------------------------