首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 平面设计 > 图形图像 >

C#由像素自成图像解决方法

2013-07-01 
C#由像素自成图像我现在得到了一幅8位灰度图像处理后的像素,以及此图像的长和宽,请问如何用C#由这些数据生

C#由像素自成图像
我现在得到了一幅8位灰度图像处理后的像素,以及此图像的长和宽,请问如何用C#由这些数据生成一幅8位灰度图像呢?要是知道一幅彩色图像的RGB又应该如何生成图像呢?? c# 图像处理
[解决办法]
new一副那么大小的灰度bitmap,然后以原始格式LockBits,然后按照位图的要求将你的数据填充到Lock到的内存中,在unlockbis。
[解决办法]
private static Bitmap PImage(byte[]src,int w,int h)
        {
        //构建与原图像大小一样的模版图像
            Bitmap dstBitmap = new Bitmap(w, h, System.Drawing.Imaging.PixelFormat.Format24bppRgb);

       //将原图像存入内存
            System.Drawing.Imaging.BitmapData dstData = dstBitmap.LockBits(new Rectangle(0, 0, w, h), System.Drawing.Imaging.ImageLockMode.WriteOnly, System.Drawing.Imaging.PixelFormat.Format24bppRgb);
            unsafe
            {
                byte* pOut = (byte*)dstData.Scan0.ToPointer();
                int stride = dstData.Stride;
                int r, g, b;
                for (int y = 0; y < h; y++)
                {
                    for (int x = 0; x < w; x++)
                    {
                        pOut[0] = (byte)src[i*3+j*h];//b
                    pOut[1] = (byte)src[i*3+1+j*h];//g
                    pOut[2] = (byte)src[i*3+2+j*h];//r
                        pOut += 3;
                    }
                    pOut += srcData.Stride - w * 3;
                }
                dstBitmap.UnlockBits(dstData);


                return dstBitmap;
            }
          
        }
这个是针对24位彩色图的,至于8位的你把参数改下就行了,手写的,没测试,你试下!src为你提供的保存彩色图像rgb信息的数组
[解决办法]
到我的空间去下载一个数组与位图的转换类

热点排行