キソスタ

基礎を調べるきっかけを集めてみました。

C# マルチスレッドでBMPを数値にするサンプルプログラム


次のようなコードがC#でマルチスレッドでBMPファイルを数値に変換するサンプルです:

 

C# マルチスレッドでBMPを数値にするサンプルプログラム

 

csharp
Copy code
using System;
using System.Drawing;
using System.Threading.Tasks;

namespace BMPLoader
{
    class Program
    {
        static void Main(string[] args)
        {
            string fileName = "example.bmp";

            Bitmap image = new Bitmap(fileName);
            int[,] imageData = new int[image.Height, image.Width];

            Parallel.For(0, image.Height, i =>
            {
                for (int j = 0; j < image.Width; j++)
                {
                    Color pixel = image.GetPixel(j, i);
                    int pixelValue = (pixel.R + pixel.G + pixel.B) / 3;
                    imageData[i, j] = pixelValue;
                }
            });

            Console.WriteLine("Image data: ");
            for (int i = 0; i < imageData.GetLength(0); i++)
            {
                for (int j = 0; j < imageData.GetLength(1); j++)
                {
                    Console.Write(imageData[i, j] + " ");
                }
                Console.WriteLine();
            }
            Console.ReadLine();
        }
    }
}

 

このコードでは、「System.Drawing」と「System.Threading.Tasks」の2つのライブラリを使用しています。「Bitmap」クラスを使用してBMPファイルを読み込み、「Parallel.For」メソッドを使用して各ピクセルの値を計算する処理をマルチスレッドで実行しています。ピクセル値は、各ピクセルの赤、緑、青の3つの色成分の平均値として計算されます。