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;
            }
  • 相关阅读:
    [BZOJ1620][Usaco2008 Nov]Time Management 时间管理
    [BZOJ1634][Usaco2007 Jan]Protecting the Flowers 护花
    [BZOJ1725][Usaco2006 Nov]Corn Fields牧场的安排
    [BZOJ1708][Usaco2007 Oct]Money奶牛的硬币
    [BZOJ1690][Usaco2007 Dec]奶牛的旅行
    fzu 2132 LQX的作业
    fzu 2139 久违的月赛之二
    poj 1849 Two 树形dp
    师范大学 e: skyscrapers
    O(∩_∩)O~~
  • 原文地址:https://www.cnblogs.com/assassinx/p/1966757.html
Copyright © 2011-2022 走看看