Tôi đang chụp ảnh từ máy ảnh thông minh và nhận mảng byte từ máy ảnh thông qua lập trình socket (ứng dụng .NET là máy khách, máy ảnh là máy chủ).Phương pháp Image.FromStream() trả về ngoại lệ đối số không hợp lệ
Vấn đề là tôi nhận được ngoại lệ System.InvalidArgument khi chạy.
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;
}
Tôi đã tìm kiếm sự cố này trong nhiều diễn đàn và đã thử các đề xuất do nhiều chuyên gia đưa ra nhưng không có gì hữu ích.
Tôi không nghĩ rằng có bất kỳ vấn đề với mảng byte như vậy vì khi tôi nạp cùng một mảng byte vào ứng dụng khách VC++ MFC của tôi, tôi nhận được hình ảnh. Nhưng điều này không bằng cách nào đó làm việc trong C# .NET.
Có ai có thể giúp tôi không?
PS:
phương phápkhác tôi đã cố gắng để hoàn thành nhiệm vụ tương tự là:
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;
}
Không ai trong số các phương pháp trên đã làm việc. Giúp đỡ một cách tử tế.
gì sẽ xảy ra nếu bạn chỉ đơn giản là viết bytearray vào một tập tin trên đĩa? Tệp có thể mở với một cái gì đó như photoshop không? – Chris
bạn đã giải quyết chưa? Tôi có cùng một vấn đề – robob