1

バイト配列を 2 次元の int 配列に変換するメソッドを書くのを手伝ってくれる人はいますか?!

私はそれを書いた:

internal int[][] byteToInt(byte[] byteArray)
    {
        int width = (int)Math.Sqrt(byteArray.Length);
        int[][] tmp = new int[width][];
        for (int i = 0; i < width; i++)
        {
            tmp[i] = new int[width];
        }
        for (int i = 0; i < width; i++)
        {
            for (int j = 0; j < width; j++)
            {
                tmp[i][j]=(int)byteArray[(i*width+j)];
            }
        }
        return tmp;
    }

しかし、それは正しく機能していません....

4

2 に答える 2

0

JPG を bytearray に変換するためのコード:

public byte[] FileToByteArray(string _FileName)
    {
        byte[] _Buffer = null;

        try
        {
            // Open file for reading
            System.IO.FileStream _FileStream = new System.IO.FileStream(_FileName, System.IO.FileMode.Open, System.IO.FileAccess.Read);

            // attach filestream to binary reader
            System.IO.BinaryReader _BinaryReader = new System.IO.BinaryReader(_FileStream);

            // get total byte length of the file
            long _TotalBytes = new System.IO.FileInfo(_FileName).Length;

            // read entire file into buffer
            _Buffer = _BinaryReader.ReadBytes((Int32)_TotalBytes);

            // close file reader
            _FileStream.Close();
            _FileStream.Dispose();
            _BinaryReader.Close();
        }
        catch (Exception _Exception)
        {
            // Error
            Console.WriteLine("Exception caught in process: {0}", _Exception.ToString());
        }

        return _Buffer;
    }
于 2012-06-26T09:34:51.657 に答える
0

OK、これであなたが望むことができると思います。

私が正しく理解していれば、画像を取得して、それを int RGB 値の 2 次元配列に変換する必要があります。

internal int[,] JpgToInt(String fileName)
{
    Bitmap Bitmap = new Bitmap(fileName);

    int[,] ret = new int[Bitmap.Width,Bitmap.Height];

    for (int i = 0; i < Bitmap.Width; i++)
    {
        for (int j = 0; j < Bitmap.Height; j++)
        {
            ret[i, j] = Bitmap.GetPixel(i, j).ToArgb();
        }
    }
    return ret;
}

主な質問には答えませんが、問題を解決し、質問の解決策にはなりません。

主な質問への答えとして、バイト配列を任意に取得して 2 次元の int 配列にする方法はありません。これは、2 次元配列の次元がわからないためです。

ファイルから画像を取得するために使用しているコードは、jpg ファイルの生のバイナリを取得する正しい方法ですが、それ自体で画像を取得することはできません。( jpeg ファイルの形式については、ウィキペディアを参照してください)

于 2012-06-26T10:08:28.487 に答える