c#十进制数字的一串数字可以直接转成图像么

从网上看到好多说,要用二进制把数据转成图片,十进制的数据可以直接转成图片么

不可以,还要先转回二进制才行

那如果这串数字比较长,用什么方法转比较好

那显示图片的时候,应该调用什么函数,默认几个bit代表一个灰度?

首先楼主要明白一件事情,一张图片由很多个像素点组成,每个像素点可以获取一个color对象,而一个color由三个三原色数值表示。

///
/// 图像灰度反转
///
///
///
public static Bitmap GrayReverse(Bitmap bmp)
{
for (int i = 0; i < bmp.Width; i++)
{
for (int j = 0; j < bmp.Height; j++)
{
//获取该点的像素的RGB的颜色
Color color = bmp.GetPixel(i, j);
Color newColor = Color.FromArgb(255 - color.R, 255 - color.G, 255 - color.B);
bmp.SetPixel(i, j, newColor);
}
}
return bmp;
}


你要生成一张图片,就要指定每个像素点的色值。

现在原数据流是一串数据如108.20.56.45....代表每个点的灰度值,想把这串数据转成灰度图像,c#里面有没有现成的调用函数

如果是每个点的灰度值,可以把RGB三个色值都设为一个数,Color.FromArgb(108, 108, 108);这个可以代表灰度图像,因为实际在将彩色图片变为灰度图片时也是这么做的,取得数是当前像素点三原色的加权平均值

图片说明
怎么把 static void Main(string[] args)里面的一串数据传到public static Bitmap GrayReverse(Bitmap bmp)里,返回的时候return直接返回到static void Main(string[] args)里么?

我可以给你提供思路:
1.你的数据是从10bit转过来的,我只做过8bit颜色,8bit就是RGB,色值范围是0-255,10bit范围是0-1023,8bit提供256个采样点,而10bit提供1024个采样点,其色彩精度是8bit的4倍。 因此我认为你可以这样做先以4:1数值转换试试,不行再找10bit转8bit的算法。
2.你可能对我贴的代码有所误解,那个是灰度反转不能直接套用,但是对于你这个情况具有很大的启发意义,详情请参考:http://blog.csdn.net/jia20003/article/details/7392325
3.Color.FromArgb(108, 108, 108)的意思是生成一个R=108,G=108,B=108的color对象,这个color作为该像素点的color
4.至于最后的那个问题,public static Bitmap GrayReverse(Bitmap bmp) 是一个自定义函数 ,bmp是一个形参,需要你传递进去一个bitmap,当然这个bitmap,你可以改成一个二维数组,因为你的数据就是二维数组,然后生成一个bitmap,把它存为你想要的图片格式即可。(ps:恕我直言,这个是很简单的基础知识);
总得思路就是:处理原始10bit数据转为8bitRGB数据-->Color.FromArgb(108, 108, 108)生成每个像素点的颜色,108就是该点的灰度值-->bmp.SetPixel(图片X,图片Y, newColor); 把生成的color放在图片的具体位置-->返回bitmap,将其存贮为想要的图片格式,或者在picbox中显示出来。
其实你这个问题很简单的,就是10bit转8bit我只能提供参考意见4:1转换,我估计是可行的。

而且我很奇怪你这个10bit数据是怎么来的,