C# Bitmap图像分离/合并RGB方法

最近在研究图像编辑,就写了一些实用方法

分离RGB有了两个模式:

彩色:

R:(r,0,0) G(0,g,0) B(0,0,b)

灰度:

R:(r,r,r) G(g,g,g) B(b,b,b)

 

 

下面是分离/合并RGB方法

合并RGB

        public static Bitmap MergeRGB(Bitmap r, Bitmap g, Bitmap b)
        {
            int x = Min(a.Width, r.Width, g.Width, b.Width);
            int y = Min(a.Height, g.Height, b.Height, r.Height);
            Bitmap result = new Bitmap(x, y);//以三个图像最小大小建立合并图像

            for (int i = 0; i < x; i++)
            {
                for (int j = 0; j < y; j++)
                {
                    //用Max是为了兼容颜色模式与图像模式
                    int cR = Max(r.GetPixel(i, j).R, r.GetPixel(i, j).G, r.GetPixel(i, j).B);
                    int cG = Max(g.GetPixel(i, j).R, g.GetPixel(i, j).G, g.GetPixel(i, j).B);
                    int cB = Max(b.GetPixel(i, j).R, b.GetPixel(i, j).G, b.GetPixel(i, j).B);
                    result.SetPixel(i, j, Color.FromArgb(cR, cG, cB));
                }
            }
            return result;
        }

分离RGB(isColor:是否为颜色模式)

        public void SeparateRGB(Bitmap input, out Bitmap r, out Bitmap g, out Bitmap b, bool isColor)
        {
            Bitmap rr = new Bitmap(input.Width, input.Height);
            Bitmap gg = new Bitmap(input.Width, input.Height);
            Bitmap bb = new Bitmap(input.Width, input.Height);
            for (int y = 0; y < input.Height; y++)
            {
                for (int x = 0; x < input.Width; x++)
                {
                    Color color = input.GetPixel(x, y);
                    rr.SetPixel(x, y, isColor ? Color.FromArgb(255, color.R, 0, 0) : Color.FromArgb(color.R, color.R, color.R));
                    gg.SetPixel(x, y, isColor ? Color.FromArgb(255, 0, color.G, 0) : Color.FromArgb(color.G, color.G, color.G));
                    bb.SetPixel(x, y, isColor ? Color.FromArgb(255, 0, 0, color.B) : Color.FromArgb(color.B, color.B, color.B));
                }
            }
            r = rr;
            g = gg;
            b = bb;
        }

(作者还是学生党,自学编程,文章写的烂请不要见怪doge)

  • 5
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值