我有一组ushort像素数据需要保存为jpeg文件。根据我的发现,我可以使用
来做到这一点Image.Save(path, ImageFormat.Jpeg);
但我不知道如何将ushort数据导入Image对象。我已经找到了使用字节数组执行此操作的方法,但不是ushort。 我花了很多时间试图解决这个问题所以现在我问强大的StackOverflow,我该怎么做?
编辑: 对不起,ushorts是16位灰度值。
答案 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参考可能有所帮助。