zoukankan      html  css  js  c++  java
  • 改变图片的对比度

            private void button1_Click(object sender, EventArgs e)
            {
                UpdatePicBoxEventHandle UpdatePicBox = new UpdatePicBoxEventHandle(SetContrast);
    
                Image img = pictureBox1.Image;
                for (double i = -255; i < 255; i++)
                {
                    UpdatePicBox.BeginInvoke(img.Clone() as Bitmap, i, new AsyncCallback(UpdatePicBoxCallBack), UpdatePicBox);
                }
            }
            delegate Image UpdatePicBoxEventHandle(Image img, double contrast);
            public void UpdatePicBoxCallBack(IAsyncResult result)
            {
                if (result.IsCompleted)
                {
                    UpdatePicBoxEventHandle updatepicbox = result.AsyncState as UpdatePicBoxEventHandle;
                    using (Image img = updatepicbox.EndInvoke(result) as Image)
                    {
                        //img.Save(Guid.NewGuid().ToString() + ".jpg");
                        pictureBox2.Image = new Bitmap(img);
                    }
                }
            }
            //设置对比度
            public Image SetContrast(Image oImg, double contrast)
            {
                using (Bitmap tImg = oImg as Bitmap)
                {
                    if (contrast < -255) contrast = -255;
                    if (contrast > 255) contrast = 255;
                    contrast = (255.0 + contrast) / 255.0;//对比度值
                    contrast *= contrast;
                    Color c;
                    //遍历图像中的像素
                    for (int i = 0; i < tImg.Width; i++)
                        for (int j = 0; j < tImg.Height; j++)
                        {
                            //获取像素点的颜色信息
                            c = tImg.GetPixel(i, j);
                            //红色分量值
                            double R = c.R / 255.0;
                            R -= 0.5;
                            R *= contrast;
                            R += 0.5;
                            R *= 255;
                            if (R < 0) R = 0;
                            if (R > 255) R = 255;
                            //绿色分量值
                            double G = c.G / 255.0;
                            G -= 0.5;
                            G *= contrast;
                            G += 0.5;
                            G *= 255;
                            if (G < 0) G = 0;
                            if (G > 255) G = 255;
                            //蓝色分量值
                            double B = c.B / 255.0;
                            B -= 0.5;
                            B *= contrast;
                            B += 0.5;
                            B *= 255;
                            if (B < 0) B = 0;
                            if (B > 255) B = 255;
                            //重新设置像素点的颜色
                            tImg.SetPixel(i, j, Color.FromArgb((byte)R, (byte)G, (byte)B));
                        }
                    return tImg.Clone() as Image;
                }
            }

  • 相关阅读:
    Oracle通过最小分区增加分区的SQL
    Oracle获取时间段内的各月底日期
    GET_MAPPING_DQL based on columns
    Oracle 分析问题sql的历史执行情况
    Oracle v$sql,v$sqlarea,v$sqltext区别
    Oracle修改表及分区表的表空间
    Oracle tablespace size sql
    ORACLE alter table storage
    Emmet的HTML语法(快速生成代码)
    Js中replace替换所有.
  • 原文地址:https://www.cnblogs.com/wjshan0808/p/4239117.html
Copyright © 2011-2022 走看看