⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 grayscale.cs

📁 破解的飞信源代码
💻 CS
字号:
namespace Imps.Utils
{
    using System;
    using System.Drawing;
    using System.Drawing.Imaging;

    public class Grayscale
    {
        private float cb;
        private float cg;
        private float cr;

        public Grayscale(float cr, float cg, float cb)
        {
            this.cr = cr;
            this.cg = cg;
            this.cb = cb;
        }

        public unsafe Bitmap Apply(Bitmap srcImg)
        {
            int width = srcImg.Width;
            int height = srcImg.Height;
            BitmapData bitmapdata = srcImg.LockBits(new Rectangle(0, 0, width, height), ImageLockMode.ReadOnly, PixelFormat.Format24bppRgb);
            Bitmap bitmap = CreateGrayscaleImage(width, height);
            BitmapData data2 = bitmap.LockBits(new Rectangle(0, 0, width, height), ImageLockMode.ReadWrite, PixelFormat.Format8bppIndexed);
            int num3 = bitmapdata.Stride - (width * 3);
            int num4 = data2.Stride - width;
            byte* numPtr = (byte*) bitmapdata.Scan0.ToPointer();
            byte* numPtr2 = (byte*) data2.Scan0.ToPointer();
            for (int i = 0; i < height; i++)
            {
                int num6 = 0;
                while (num6 < width)
                {
                    numPtr2[0] = (byte) (((this.cr * numPtr[2]) + (this.cg * numPtr[1])) + (this.cb * numPtr[0]));
                    num6++;
                    numPtr += 3;
                    numPtr2++;
                }
                numPtr += num3;
                numPtr2 += num4;
            }
            bitmap.UnlockBits(data2);
            srcImg.UnlockBits(bitmapdata);
            return bitmap;
        }

        public static Bitmap CreateGrayscaleImage(int width, int height)
        {
            Bitmap srcImg = new Bitmap(width, height, PixelFormat.Format8bppIndexed);
            SetGrayscalePalette(srcImg);
            return srcImg;
        }

        public static void SetGrayscalePalette(Bitmap srcImg)
        {
            if (srcImg.PixelFormat != PixelFormat.Format8bppIndexed)
            {
                throw new ArgumentException();
            }
            ColorPalette palette = srcImg.Palette;
            for (int i = 0; i < 0x100; i++)
            {
                palette.Entries[i] = Color.FromArgb(i, i, i);
            }
            srcImg.Palette = palette;
        }
    }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -