/// <summary>
        /// 图像亮度变化
        /// value大于0图像变亮,value小于0图像变暗
        /// value的取值范围是-255~255
        /// </summary>
        /// <param name="bitmap">原始图像</param>
        /// <param name="value">亮度变化值:大于0图像变亮,小于0图像变暗value的取值范围是-255~255</param>
        /// <returns>亮度变化后的图像</returns>
        public static Bitmap Lightness(Bitmap bitmap, int value)
        {            if (bitmap == null)
            {
                return null;
            }            int width = bitmap.Width;
            int height = bitmap.Height;            try
            {                Bitmap bmpReturn = new Bitmap(width, height, PixelFormat.Format24bppRgb);                BitmapData srcBits = bitmap.LockBits(new Rectangle(0, 0, width, height), ImageLockMode.ReadOnly, PixelFormat.Format24bppRgb);
                BitmapData targetBits = bmpReturn.LockBits(new Rectangle(0, 0, width, height), ImageLockMode.WriteOnly, PixelFormat.Format24bppRgb);                unsafe
                {
                    byte* pSrcBits = (byte*)srcBits.Scan0.ToPointer();
                    byte* pTargetBits = (byte*)targetBits.Scan0.ToPointer();
                    int stride = srcBits.Stride;
                    byte* pTemp;                    for (int h = 0; h < height - 1; h++)
                    {
                        for (int w = 0; w < width - 1; w++)
                        {
                            int r, g, b;
                            int r1, g1, b1;
                            int r2, g2, b2;
                            pTemp = pSrcBits;
                            r = pTemp[2];
                            g = pTemp[1];
                            b = pTemp[0];
                            if (value >= 0)
                            {
                                r1 = r + ((255 - r) * value) / 255;
                                g1 = g + ((255 - g) * value) / 255;
                                b1 = b + ((255 - b) * value) / 255;
                            }
                            else
                            {
                                r1 = r + (r * value) / 255;
                                g1 = g + (g * value) / 255;
                                b1 = b + (b * value) / 255;
                            }                            pTargetBits[2] = (byte)r1;
                            pTargetBits[1] = (byte)g1;
                            pTargetBits[0] = (byte)b1;                            pSrcBits += 3;
                            pTargetBits += 3;
                        }                        pSrcBits += srcBits.Stride - width * 3;
                        pTargetBits += srcBits.Stride - width * 3;
                    }
                }
                bitmap.UnlockBits(srcBits);
                bmpReturn.UnlockBits(targetBits);                return bmpReturn;
            }
            catch
            {
                return null;
            }
        }
找个是处理亮度的,很好.能还原
我需要一个改变之后能还原的  改变对比度的算法