回答編集履歴

3

修正

2017/02/27 13:32

投稿

turbgraphics200
turbgraphics200

スコア4269

test CHANGED
@@ -1,6 +1,6 @@
1
1
  通常のビットマップといっているのはたぶん24ビット以上のビットマップのことだと思いますが、パレットがありません。ですのでパレットの数が0です。
2
2
 
3
- パレットのないBMPからインデックスあり(256色以下)のビットマップに変換するにはGraphics.DrawImage
3
+ パレットのないBMPからインデックスあり(256色以下)のビットマップに変換するには単純なものだとcloneでできます。
4
4
 
5
5
  ```c#
6
6
 

2

修正

2017/02/27 13:32

投稿

turbgraphics200
turbgraphics200

スコア4269

test CHANGED
@@ -4,23 +4,25 @@
4
4
 
5
5
  ```c#
6
6
 
7
- Bitmap ConvertToIndexedBMP(Image img)
7
+ using (var srcFs = new FileStream(@"src.bmp", FileMode.Open))
8
8
 
9
9
  {
10
10
 
11
- // 256色インデックスBMPインスタンス生成
12
-
13
- var indexedBMP= new Bitmap(img.Width, img.Height, PixelFormat.Format8bppIndexed);
14
-
15
- using (var gr = Graphics.FromImage(indexedBMP))
11
+ using (var srcBmp = new Bitmap(srcFs))
16
12
 
17
13
  {
18
14
 
15
+ using (var dstFs = new FileStream(@"dst.bmp", FileMode.Create, FileAccess.Write))
16
+
17
+ {
18
+
19
- gr.DrawImage(img, new Rectangle(0, 0, img.Width, img.Height));
19
+ var dstBmp = srcBmp.Clone(new Rectangle(0, 0, srcBmp.Width, srcBmp.Height), PixelFormat.Format8bppIndexed);
20
+
21
+ dstBmp.Save(dstFs, ImageFormat.Bmp);
22
+
23
+ }
20
24
 
21
25
  }
22
-
23
- return indexedBMP;
24
26
 
25
27
  }
26
28
 

1

修正

2017/02/27 13:31

投稿

turbgraphics200
turbgraphics200

スコア4269

test CHANGED
@@ -10,7 +10,9 @@
10
10
 
11
11
  // 256色インデックスBMPインスタンス生成
12
12
 
13
- var indexedBMP= new Bitmap(img.Width, img.Height, PixelFormat.Format8bppIndexed); using (var gr = Graphics.FromImage(indexedBMP))
13
+ var indexedBMP= new Bitmap(img.Width, img.Height, PixelFormat.Format8bppIndexed);
14
+
15
+ using (var gr = Graphics.FromImage(indexedBMP))
14
16
 
15
17
  {
16
18