ushort数组到Image对象

时间:2009-06-12 21:57:44

标签: c#

我有一组ushort像素数据需要保存为jpeg文件。根据我的发现,我可以使用

来做到这一点
Image.Save(path, ImageFormat.Jpeg);

但我不知道如何将ushort数据导入Image对象。我已经找到了使用字节数组执行此操作的方法,但不是ushort。 我花了很多时间试图解决这个问题所以现在我问强大的StackOverflow,我该怎么做?

编辑:  对不起,ushorts是16位灰度值。

3 个答案:

答案 0 :(得分:2)

我认为你必须实际创建一个Bitmap,在其上绘制像素并在之后保存。

这样的事情:

var bitmap = new Bitmap(sizeX, sizeY, Imaging.PixelFormat.Format16bppGrayScale)

for (y = 0; ...)
for (x = 0; ...)
{
  bitmap.SetPixel(x, y, color information from ushort array);
}

bitmap.Save("filename.jpg", ImageFormat.Jpeg);

请注意,我不知道如何将16位灰度颜色信息输入Color结构。

答案 1 :(得分:2)

这是一个基于接受的答案的完整工作示例:

 public static void SaveJpg(string fileName,int sizeX,int sizeY,ushort [] imData)
    {
        var bitmap = new Bitmap(sizeX, sizeY, PixelFormat.Format48bppRgb);
        int count = 0;
        for (int y = 0; y < sizeY; y++)
        {
            for (int x = 0; x < sizeX; x++)
            {
                bitmap.SetPixel(x, y, Color.FromArgb(imData[count], imData[count], imData[count]));
                count++;
            }
        }
        bitmap.Save(fileName, ImageFormat.Jpeg);

    }

答案 2 :(得分:1)

我相信你想使用继承自Image的Bitmap类。 This MSDN参考可能有所帮助。