スマート カメラ イメージャーから画像をキャプチャし、ソケット プログラミングを通じてカメラからバイト配列を受信しています (.NET アプリケーションがクライアント、カメラがサーバー)。
問題は、実行時に System.InvalidArgument 例外が発生することです。
private Image byteArrayToImage(byte[] byteArray)
{
if(byteArray != null)
{
MemoryStream ms = new MemoryStream(byteArray);
return Image.FromStream(ms, false, false);
/*last argument is supposed to turn Image data validation off*/
}
return null;
}
私は多くのフォーラムでこの問題を検索し、多くの専門家からの提案を試みましたが、何も役に立ちませんでした.
同じバイト配列をVC++ MFCクライアントアプリケーションにフィードすると、画像が得られるため、バイト配列自体に問題があるとは思いません。しかし、これは C#.NET ではうまくいきません。
誰でも私を助けることができますか?
PS :
同じタスクを達成しようとした他の方法は次のとおりです。
1.
private Image byteArrayToImage(byte[] byteArray)
{
if(byteArray != null)
{
MemoryStream ms = new MemoryStream();
ms.Write(byteArray, 0, byteArray.Length);
ms.Position = 0;
return Image.FromStream(ms, false, false);
}
return null;
}
2.
private Image byteArrayToImage(byte[] byteArray)
{
if(byteArray != null)
{
TypeConverter tc = TypeDescriptor.GetConverter(typeof(Bitmap));
Bitmap b = (Bitmap)tc.ConvertFrom(byteArray);
return b;
}
return null;
}
上記の方法はどれも機能しませんでした。親切に助けてください。