zoukankan      html  css  js  c++  java
  • BITMAP

    导入以下两个包:
         System.Drawing;
         System.Drawing.Imaging;
     
     
    建产对象:
         Bitmap bm = new Bitmap("c:/1.bmp");
     
    缩放:
         Bitmap bm1 = new Bitmap(bm,width,height);
     
    格式转换:
         bm.save("c:/1.jpg",ImageFromat.Jpeg);
         bm1.Save("c:/1.gif", ImageFormat.Gif);
     
    剪切一个区域:
         //剪切大小
         int cutwidth;  
         int cutheight;
         Graphics g;
         //以大小为剪切大小,像素格式为32位RGB创建一个位图对像
         Bitmap bm1 = new Bitmap(width,height,PixelFormat.Format32bppRgb) ;
         //定义一个区域
         Rectangle rg = new Rectangle(0,0,cutwidth,cutheight);
         //要绘制到的位图
         g = Graphics.FromImage(bm1);
         //将bm内rg所指定的区域绘制到bm1
         g.DrawImage(bm,rg)
    ============================================
    C#Bitmap代替另一个Bitmap的某部分 Bitmap bm = new Bitmap(宽度, 高度);// 新建一个 Bitmap 位图 System.Drawing.Graphics g = System.Drawing.Graphics.FromImage(bm); // 根据新建的 Bitmap 位图,创建画布 g.Clear(System.Drawing.Color.Black);// 使用黑色重置画布 g.DrawImage(源位图, ......); // 绘制“源位图”,后面有若干参数控制大小、坐标等等功能。
    /// <summary>
             /// 任意角度旋转
             /// </summary>
             /// <param name="bmp">原始图Bitmap</param>
             /// <param name="angle">旋转角度</param>
             /// <param name="bkColor">背景色</param>
             /// <returns>输出Bitmap</returns>
             public static Bitmap KiRotate(Bitmap bmp, float angle, Color bkColor)
             {
                 int w = bmp.Width + 2;
                 int h = bmp.Height + 2;
     
                  PixelFormat pf;
     
                 if (bkColor == Color.Transparent)
                 {
                      pf = PixelFormat.Format32bppArgb;
                  }
                 else
                 {
                      pf = bmp.PixelFormat;
                  }
     
                  Bitmap tmp = new Bitmap(w, h, pf);
                  Graphics g = Graphics.FromImage(tmp);
                  g.Clear(bkColor);
                  g.DrawImageUnscaled(bmp, 1, 1);
                  g.Dispose();
     
                  GraphicsPath path = new GraphicsPath();
                  path.AddRectangle(new RectangleF(0f, 0f, w, h));
                  Matrix mtrx = new Matrix();
                  mtrx.Rotate(angle);
                  RectangleF rct = path.GetBounds(mtrx);
     
                  Bitmap dst = new Bitmap((int)rct.Width, (int)rct.Height, pf);
                  g = Graphics.FromImage(dst);
                  g.Clear(bkColor);
                  g.TranslateTransform(-rct.X, -rct.Y);
                  g.RotateTransform(angle);
                  g.InterpolationMode = InterpolationMode.HighQualityBilinear;
                  g.DrawImageUnscaled(tmp, 0, 0);
                  g.Dispose();
     
                  tmp.Dispose();
     
                 return dst;
              }

    上面的是查到的资料用来方便记忆,下面的是自己写的有关自己做的项目中的一部分,是关于图片识别的程序部分代码

     public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
            }
            private void button1_Click(object sender, EventArgs e)
            {
                
    
                textBox1.Text = "";
                Bitmap s;
                Bitmap img = ZoomAuto(textBox2.Text, 1000, 1000, out s) as Bitmap;
                pictureBox1.Image = s;
                Tesseract ocr = new Tesseract();
                
                ocr.SetVariable("tessedit_char_whitelist", "0123456789.");
                ocr.Init(AppDomain.CurrentDomain.BaseDirectory + "Language", "eng", false);
                List<Word> result = ocr.DoOCR(img, Rectangle.Empty);
                foreach (Word item in result)
                {
                    textBox1.Text += item.Text;
                }
                img.Dispose();
                
            }
            /// <summary>
            /// 等比例缩放图片
            /// </summary>
            /// <param name="fromFile"></param>
            /// <param name="targetWidth"></param>
            /// <param name="targetHeight"></param>
            /// <param name="img"></param>
            /// <returns></returns>
            public static Image ZoomAuto(string fromFile, System.Double targetWidth, System.Double targetHeight, out Bitmap img)
            {
                //原始图片(获取原始图片创建对象,并使用流中嵌入的颜色管理信息)
                System.Drawing.Image initImage = Image.FromFile(fromFile);
                img = new Bitmap(initImage);
                double newWidth = initImage.Width;
                double newHeight = initImage.Height;
    
                //宽大于高或宽等于高(横图或正方)
                if (initImage.Width >= initImage.Height)
                {
                    newWidth = targetWidth;
                    newHeight = initImage.Height * (targetWidth / initImage.Width);
                }
                //高大于宽(竖图)
                else
                {
                    newHeight = targetHeight;
                    newWidth = initImage.Width * (targetHeight / initImage.Height);
                }
    
                //生成新图
                //新建一个bmp图片
                System.Drawing.Image newImage = new System.Drawing.Bitmap((int)newWidth, (int)newHeight);
                //新建一个画板
                System.Drawing.Graphics newG = System.Drawing.Graphics.FromImage(newImage);
    
                //设置质量
                newG.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic;
                newG.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;
    
                //置背景色
                newG.Clear(Color.White);
                //画图
                newG.DrawImage(initImage, new System.Drawing.Rectangle(0, 0, newImage.Width, newImage.Height), new System.Drawing.Rectangle(0, 0, initImage.Width, initImage.Height), System.Drawing.GraphicsUnit.Pixel);
    
    
                newG.Dispose();
                initImage.Dispose();
                //保存缩略图
                return newImage;
            }
    
            private void button2_Click(object sender, EventArgs e)
            {
    
            }
    
    
        }
  • 相关阅读:
    JS 学习笔记
    Input控件只允许输入指定字符
    NPOI导出excel使用
    combobox级联检索下拉选择框
    vue父组件调用子组件方法
    EasyUI设置Layout自适应浏览器宽度和高度
    EasyUI创建选项卡并判断是否打开
    Jquery+ajaxfileupload上传文件
    Jquery禁用网页右键菜单
    c#删除指定文件夹中今天之前的文件
  • 原文地址:https://www.cnblogs.com/sixiangqimeng/p/3298744.html
Copyright © 2011-2022 走看看