回答編集履歴
3
修正
answer
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
通常のビットマップといっているのはたぶん24ビット以上のビットマップのことだと思いますが、パレットがありません。ですのでパレットの数が0です。
|
2
|
-
パレットのないBMPからインデックスあり(256色以下)のビットマップに変換するには
|
2
|
+
パレットのないBMPからインデックスあり(256色以下)のビットマップに変換するには単純なものだとcloneでできます。
|
3
3
|
```c#
|
4
4
|
using (var srcFs = new FileStream(@"src.bmp", FileMode.Open))
|
5
5
|
{
|
2
修正
answer
CHANGED
@@ -1,14 +1,15 @@
|
|
1
1
|
通常のビットマップといっているのはたぶん24ビット以上のビットマップのことだと思いますが、パレットがありません。ですのでパレットの数が0です。
|
2
2
|
パレットのないBMPからインデックスあり(256色以下)のビットマップに変換するにはGraphics.DrawImage
|
3
3
|
```c#
|
4
|
-
|
4
|
+
using (var srcFs = new FileStream(@"src.bmp", FileMode.Open))
|
5
5
|
{
|
6
|
-
// 256色インデックスBMPインスタンス生成
|
7
|
-
var indexedBMP= new Bitmap(img.Width, img.Height, PixelFormat.Format8bppIndexed);
|
8
|
-
using (var
|
6
|
+
using (var srcBmp = new Bitmap(srcFs))
|
9
7
|
{
|
8
|
+
using (var dstFs = new FileStream(@"dst.bmp", FileMode.Create, FileAccess.Write))
|
9
|
+
{
|
10
|
-
|
10
|
+
var dstBmp = srcBmp.Clone(new Rectangle(0, 0, srcBmp.Width, srcBmp.Height), PixelFormat.Format8bppIndexed);
|
11
|
+
dstBmp.Save(dstFs, ImageFormat.Bmp);
|
12
|
+
}
|
11
13
|
}
|
12
|
-
return indexedBMP;
|
13
14
|
}
|
14
15
|
```
|
1
修正
answer
CHANGED
@@ -4,7 +4,8 @@
|
|
4
4
|
Bitmap ConvertToIndexedBMP(Image img)
|
5
5
|
{
|
6
6
|
// 256色インデックスBMPインスタンス生成
|
7
|
-
var indexedBMP= new Bitmap(img.Width, img.Height, PixelFormat.Format8bppIndexed);
|
7
|
+
var indexedBMP= new Bitmap(img.Width, img.Height, PixelFormat.Format8bppIndexed);
|
8
|
+
using (var gr = Graphics.FromImage(indexedBMP))
|
8
9
|
{
|
9
10
|
gr.DrawImage(img, new Rectangle(0, 0, img.Width, img.Height));
|
10
11
|
}
|