我有一个包含图片数据的ushort列表,我想在图片框中显示此图片,因此我首先将其加载到MemoryStream
然后在FromStream
中使用image
方法} class将其加载到pictureBox
:
.
.
MemoryStream ms = new MemoryStream(pixels24.ToArray()); //pixels24 is ushort[]
this.DicomImage.Image = System.Drawing.Image.FromStream(ms);
.
.
如果我运行此错误显示:
错误1最佳重载方法匹配 'System.IO.MemoryStream.MemoryStream(int)'有一些无效的参数
我知道MemoryStream
不能将ushort数组作为输入,它需要byte []而不是......
那么如何将ushort数组中表示的图像放到图片框中呢?
答案 0 :(得分:0)
假设您的ushort
值介于0和255之间,
checked
{
ushort[] vals = pixels24.ToArray();
var imgbytes = (from val in vals
select (byte)val).ToArray();
// Your Code
MemoryStream ms = new MemoryStream(imgbytes);
this.DicomImage.Image = System.Drawing.Image.FromStream(ms);
}
当checked
值大于255时,ushort
块用于在溢出期间抛出异常。
答案 1 :(得分:0)
您的愿望有点奇怪,因为根据参考文献,ushort
的范围大于Byte
所以如果您甚至将ushort
数组转换为byte
数组可能会遇到数据丢失问题或 system.overflowexception 。如果你可以处理这个问题并做一些处理异常的代码,你可以简单地转换数组。
byte.MinValue = 0 / byte.MaxValue = 255
<强> ushort.MinValue = 0 / ushort.MaxValue = 65535 强>
这是一个简单的例子
for (var i = 0; i <= 9; i++)
{
try
{
bytPixle24[i] = Convert.ToByte(pixel24[i]);
}
catch (System.OverflowException ex)
{
// ...
}
}