zoukankan      html  css  js  c++  java
  • 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;
            }
  • 相关阅读:
    ubutun Sogou输入法安装
    git的使用
    比较字符串(包含以及变位词)
    python 与时间有关的操作
    PyBrain库的example之NFQ流程图分析
    python之面向对象(继承)
    C/C++中一些不太注意到的小知识点--[锦集]
    python 有关引用的一些问题
    CMake尝鲜
    vim初探
  • 原文地址:https://www.cnblogs.com/assassinx/p/1966757.html
Copyright © 2011-2022 走看看