• C#调节图片亮度


    昨天去客户那里测试,需求才开始,所以很简单,就是测一下能不能接受到视频或图片,然后保存下来,现场客户说亮度不够,然后学了一下C#调节图片亮度,记录一下

    学习的帖子在这:http://blog.csdn.net/kenkao/article/details/3148091

    /// <summary>
            /// 图像明暗调整
            /// </summary>
            /// <param name="b">原始图</param>
            /// <param name="degree">亮度[-255, 255]</param>
            /// <returns></returns>
            public static Bitmap KiLighten(Bitmap b, int degree)
            {
                if (b == null)
                {
                    return null;
                }
    
                if (degree < -255) degree = -255;
                if (degree > 255) degree = 255;
    
                try
                {
    
                    int width = b.Width;
                    int height = b.Height;
    
                    int pix = 0;
    
                    BitmapData data = b.LockBits(new Rectangle(0, 0, width, height), ImageLockMode.ReadWrite, PixelFormat.Format24bppRgb);
    
                    unsafe
                    {
                        byte* p = (byte*)data.Scan0;
                        int offset = data.Stride - width * 3;
                        for (int y = 0; y < height; y++)
                        {
                            for (int x = 0; x < width; x++)
                            {
                                // 处理指定位置像素的亮度
                                for (int i = 0; i < 3; i++)
                                {
                                    pix = p[i] + degree;
    
                                    if (degree < 0) p[i] = (byte)Math.Max(0, pix);
                                    if (degree > 0) p[i] = (byte)Math.Min(255, pix);
    
                                } // i
                                p += 3;
                            } // x
                            p += offset;
                        } // y
                    }
    
                    b.UnlockBits(data);
    
                    return b;
                }
                catch
                {
                    return null;
                }
    
            } // end of Lighten
    View Code

    然后调用

    string savePath = @"C:UserswjrDesktop出差用1.png";
                Bitmap img = new Bitmap(@"C:UserswjrDesktop出差用WindowsFormsApplication1WindowsFormsApplication1WindowsFormsApplication1inReleaseCapture20170417 025826019.png");
                Bitmap a = KiLighten(img, 20);
                a.Save(savePath);
    Bitmap a = KiLighten(img, 20);
    我这里设置的是20,范围是-255~255,所以0是原图片亮度,我设置的20,所以图片亮度想过显示不明显,我弄个100的,看下效果


    
    
  • 相关阅读:
    wampserver域名访问报错
    提升linux文件夹权限
    linux压缩
    服务器重启记录
    修改mysql数据库密码
    电脑没声音解决
    删除任务管理其中的多余的启动项
    资源占用无法删除解决方案
    删除资源管理器中左边菜单的onedrive
    13. 导航
  • 原文地址:https://www.cnblogs.com/wjr408/p/6727118.html
Copyright © 2020-2023  润新知