C# 用指针法将 灰度图转二维数组。 100

C#用指针法将灰度图转二维数组。要求:1.用指针法;2.不要讲思路,思路我都会,我就是老失败,求一份完整可用的代码;3.事成之后再答谢100金币。谢谢各位大神了。... C# 用指针法将 灰度图转二维数组。要求: 1.用指针法;2.不要讲思路,思路我都会,我就是老失败,求一份完整可用的代码;3.事成之后再答谢100金币。

谢谢各位大神了。
展开
 我来答
wjshan0808
2016-10-09 · TA获得超过601个赞
知道小有建树答主
回答量:696
采纳率:74%
帮助的人:364万
展开全部

是类似这样的吗?

//还原
        private void Save(byte[,] arr, PixelFormat pf, string desFile)
        {
            if (System.IO.File.Exists(desFile))
                System.IO.File.Delete(desFile);
            int height = arr.GetLength(0);
            int width = arr.GetLength(1);
            using (Bitmap g = new Bitmap(width, height, pf))
            {
                for (int i = 0; i < height; i++)
                {
                    for (int j = 0; j < width; j++)
                    {
                        g.SetPixel(j, i, Color.FromArgb(arr[i, j], arr[i, j], arr[i, j]));
                    }
                }
                g.Save(desFile);
            }
        }
        //Set unsafe 
        //读取
        private unsafe byte[,] ToArray(string file)
        {
            using (Bitmap g = new Bitmap(file))
            {
                byte[,] a = new byte[g.Height, g.Width];

                BitmapData bd = g.LockBits(new Rectangle(0, 0, g.Width, g.Height), ImageLockMode.ReadOnly, g.PixelFormat);
                byte* p = (byte*)bd.Scan0.ToPointer();
                int bytes = 3;
                switch (g.PixelFormat)
                {
                    case PixelFormat.Format32bppArgb:
                    case PixelFormat.Format32bppPArgb:
                    case PixelFormat.Format32bppRgb:
                        bytes = 4;
                        break;
                }
                for (int i = 0; i < a.GetLength(0); i++)
                {
                    for (int j = 0; j < a.GetLength(1); j++)
                    {
                        //灰度图片RGB值一样的 
                        a[i, j] = p[0];
                        p += bytes;
                    }
                    p += bd.Stride - bd.Width * bytes;
                }
                g.UnlockBits(bd);
                return a;
            }
        }
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式