モノクロのビットマップ(つまり、白黒)を読み取り、黒の部分を表すxを出力する単純なファイルがあります。しかし、何らかの理由でコードを追加する必要があることに気づきました
img.RotateFlip(RotateFlipType.Rotate270FlipY);
「正常に」表示されるようにします。言い換えれば、私のコードまたは組み込み関数の実装のいずれかで、画像が読み込まれるときに画像が回転および反転し、意図したものとは逆の動作をしているようです。
私はこれが「意図したとおりに機能する」というよりもばかげた間違いであると確信しているので、以下の関連コードを含めます。
private void button1_Click(object sender, EventArgs e)
{
if (openFileDialog1.ShowDialog() == DialogResult.OK)
{
// Stream objects for capturing image data
StreamReader sr = new StreamReader(openFileDialog1.OpenFile());
MemoryStream memStream = new MemoryStream();
// Image objects containing image data
Bitmap img = (Bitmap) Bitmap.FromStream(sr.BaseStream);
/**** HACK ****/
//img.RotateFlip(RotateFlipType.Rotate270FlipY);
/**** ****/
// Save the image data to our memory stream
img.Save(memStream, ImageFormat.Gif);
// Save data to a byte array
byte[] imgData = memStream.ToArray();
// Print image data
for (int x = 0; x < img.Width; ++x)
{
Color rgb = new Color();
for (int y = 0; y < img.Height; ++y)
{
rgb = img.GetPixel(x, y);
if (rgb.ToArgb().Equals(Color.White.ToArgb()))
{
textBox1.AppendText(" ");
}
else
{
textBox1.AppendText("x");
}
}
textBox1.AppendText(Environment.NewLine);
}
}
}
文字「B」のビットマップを読み取ると、次のようになります。
「ハック」なし:
x x
x x
x x
xx xx
xxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxx
x x x
x x x
x x x
x x x
x x x
x x x
x x x
x x x
x x
x xx
x xxxx x
xx xxx x x
xx xxxx xx xx
xxxxxxxxxx xxx xxx
xxxxxxx xxxxxxxxxx
xxx xxxxxxx
xxx
「ハック」で:
xxxxxxxxxxxxxxx
xxxx xxx
xxx xxx
xxx xx
xxx xx
xxx xx
xxx xxx
xxx xxx
xxx xxx
xxx xxx
xxx xxxx
xxx xxxx
xxx xxxx
xxxxxxxxxxxxxx
xxx xxx
xxx xxx
xxx xxx
xxx xxx
xxx xxx
xxx xxx
xxx xxx
xxx xx
xxx xxx
xxx xx
xxx xxx
xxxx xxx
xxxxxxxxxxxxxxxx
間違いを指摘されるのをとても楽しみにしています。:)
前もって感謝します!