複数のバイト配列を取得するには、読み込み時の長さを知る必要があります。保存されているすべての画像が同じサイズであればデータを読み込み
using (var stream = new FileStream(tempFile, FileMode.Append))
{
//convertedImage = one byte array
// All ints are 4-bytes
stream.Write(BitConverter.GetBytes(convertedImage.Length), 0, 4);
// now, we can write the buffer
stream.Write(convertedImage, 0, convertedImage.Length);
}
が、その後、
using (var stream = new FileStream(tempFile, FileMode.Open))
{
// loop until we can't read any more
while (true)
{
byte[] convertedImage;
// All ints are 4-bytes
int size;
byte[] sizeBytes = new byte[4];
// Read size
int numRead = stream.Read(sizeBytes, 0, 4);
if (numRead <= 0) {
break;
}
// Convert to int
size = BitConverter.ToInt32(sizeBytes, 0);
// Allocate the buffer
convertedImage = new byte[size];
stream.Read(convertedImage, 0, size);
// Do what you will with the array
listOfArrays.Add(convertedImage);
} // end while
}
です:この(あなたが書くコードを変更することができる場合)の長さの値を追加することで操作を行うための最も簡単な方法最初の読み書き呼び出しをそれぞれから取り除くことができ、size
を配列のサイズにハードコードすることができます。
これらは取得できません。読み込むバイト数はわかりません。コードを修正し、最低でもまずconvertedImage.Lengthを書き込む必要があります。 –
分割する場所はどのように分かりますか?ファイルそのものに利用可能な情報がないようです。 – Evk
@HansPassant ...それは私が恐れていたことです。どこで分割するのですか?あなたの2番目の文を詳しく教えてください。私が手動で各イメージのために読むためにバイトを設定できるならば、それは実行可能です。 –