C#图像处理

简单的图片存取

通过bitmap的getpixel方法获取每个像素的rgb值 然后把它存入一个文件,然后再通过读取这个文件还原一个bitmap的例子,

。Net就是这么强大就是这么bt  也许你你不知道jpg的内部文件格式 也许你不知道bmp文件的内部格式(实际上也不是很复杂研究一下就OK啦 ˇ△ˇ)

但是你却可以借助.Net自带的GDI 图形库这个强大的东东作为桥梁在短时间来完成你想要的功能 ,你看哇哈哈 是不是发现你也会用C#编写图片处理工具了 (¯▽¯;) 编程就是这么的有趣。

啥加水印啊 啥调节某个区域的亮度啊 啥。。。。那些都自己整 只要有想法都可以实现

C#代码:

static void Main(string[] args)
        {
            //找一个640x480的图片 读取文件并把所有像素转存到文件a
            BinaryWriter sw;
            if (File.Exists("a"))
                File.Delete("a");
            sw = new BinaryWriter(File.Create("a"));
            Bitmap img = new Bitmap("a.bmp");
            for (int i = 0; i < img.Height; i++)
            {
                for (int j = 0; j < img.Width; j++)
                {
                    Color cor = img.GetPixel(j, i);
                    sw.Write(cor.R);
                    sw.Write(cor.G);
                    sw.Write(cor.B);
                }
            }
            sw.Close();

            //从转存的文件中读取位图数据 并生成b.jpg
            BinaryReader br;
            br = new BinaryReader(new FileStream("a", FileMode.Open));
            byte data;
            Bitmap img2 = new Bitmap(640, 480);
            for (int i = 0; i < img2.Height; i++)
            {
                for (int j = 0; j < img2.Width; j++)
                {
                    byte r = br.ReadByte();

                    byte g = br.ReadByte();

                    byte b = br.ReadByte();

                    Color cor = Color.FromArgb(r, 0, b);

                    img2.SetPixel(j, i, cor);
                }
            }

            br.Close();
            img2.Save("b.jpg", ImageFormat.Jpeg);

        }

可以随意调整质量的jpg转储:

private void button1_Click(object sender, EventArgs e)
        {
            ImageCodecInfo ici;
            System.Drawing.Imaging.Encoder enc;
            EncoderParameter ep;
            EncoderParameters epa;

            // Initialize the necessary objects
            ici = GetEncoderInfo("image/jpeg");
            enc = System.Drawing.Imaging.Encoder.Quality;//设置保存质量
            epa = new EncoderParameters(1);

            // Set the compression level
            ep = new EncoderParameter(enc, 1L);//质量等级为25%
            epa.Param[0] = ep;

            // create a Bitmap object from a BMP file.
            System.Drawing.Image bmp = System.Drawing.Image.FromFile(@"11.jpg");

            // Convert to JPEG and Save
            bmp.Save("111.jpg", ici, epa);
            
        }


        //将BMP图象转换为JPEG图象
        private static ImageCodecInfo GetEncoderInfo(String mimeType)
        {
            int j;
            ImageCodecInfo[] encoders;
            encoders = ImageCodecInfo.GetImageEncoders();
            for (j = 0; j < encoders.Length; ++j)
                if (encoders[j].MimeType == mimeType)
                    return encoders[j];
            return null;
        }
原文地址:https://www.cnblogs.com/assassinx/p/1966757.html