为了账号安全,请及时绑定邮箱和手机立即绑定

C#RGB [,]到图片框

C#RGB [,]到图片框

C#
紫衣仙女 2021-05-05 17:42:22
我有一个(2448 * 2048)5Mpixel图像数据的数据,但该图片框只有(816 * 683)约500,000像素,因此我降低了像素,只需要一个黑白图像,所以我使用了G值创建图像,但是我输出的图像如下图所示。我的错误是哪一部分? public int[,] lowered(int[,] greenar)    {        int[,] Sy = new int[816, 683];        int x = 0;        int y = 0;        for (int i = 1; i < 2448; i += 3)        {            for (int j = 1; j < 2048; j += 3)            {                Sy[x, y] = greenar[i, j];                y++;            }            y = 0;            x++;        }        return Sy;    }static Bitmap Create(int[,] R, int[,] G, int[,] B)    {        int iWidth = G.GetLength(1);        int iHeight = G.GetLength(0);        Bitmap Result = new Bitmap(iWidth, iHeight,        System.Drawing.Imaging.PixelFormat.Format24bppRgb);        Rectangle rect = new Rectangle(0, 0, iWidth, iHeight);        System.Drawing.Imaging.BitmapData bmpData = Result.LockBits(rect,        System.Drawing.Imaging.ImageLockMode.ReadWrite, System.Drawing.Imaging.PixelFormat.Format24bppRgb);        IntPtr iPtr = bmpData.Scan0;        int iStride = bmpData.Stride;        int iBytes = iWidth * iHeight * 3;        byte[] PixelValues = new byte[iBytes];        int iPoint = 0;        for (int i = 0; i < iHeight; i++)        {            for (int j = 0; j < iWidth; j++)            {                int iG = G[i, j];                int iB = G[i, j];                int iR = G[i, j];                PixelValues[iPoint] = Convert.ToByte(iB);                PixelValues[iPoint + 1] = Convert.ToByte(iG);                PixelValues[iPoint + 2] = Convert.ToByte(iR);                iPoint += 3;            }        }        System.Runtime.InteropServices.Marshal.Copy(PixelValues, 0, iPtr, iBytes);        Result.UnlockBits(bmpData);        return Result;    }
查看完整描述

2 回答

?
慕运维8079593

TA贡献1876条经验 获得超5个赞

您无需对图像进行降采样,就可以通过这种方式进行。将picturebox属性BackgroundImageLayout设置为zoom或Stretch并将其分配为:


picturebox.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Zoom;

picturebox.BackgroundImage = bitmap;

System.Windows.Forms.ImageLayout.Zoom将自动将位图调整为图片框的大小。


查看完整回答
反对 回复 2021-05-16
  • 2 回答
  • 0 关注
  • 178 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信