• C#图片压缩类winform


    using System;
    using System.Collections.Generic;
    using
    System.Text;
    using System.Drawing;
    using System.Drawing.Imaging;
    using
    System.IO;
    using System.Windows.Forms;

    namespace EU.EUClass
    {

    class ImgGDI
      {
          public
    ImgGDI()
          {
           
    //构造函数
          }

       
    ///
          /// Bitmap转换byte[]数组
     
      ///
          ///
       
    ///
          public byte[] Bmptobyte(Bitmap
    bmp)
          {
           
    MemoryStream ms = new MemoryStream();
         
      bmp.Save(ms, ImageFormat.Jpeg);
         
      ms.Flush();
              byte[]
    buffer = ms.GetBuffer();
             
    ms.Close();
              return
    buffer;
          }

         
    ///
          /// byte[]数组转换Bitmap
       
    ///
          ///
         
    ///
          public Bitmap bytetobmp(byte[]
    buffer)
          {
           
    MemoryStream ms = new MemoryStream();
         
      ms.Write(buffer, 0, buffer.Length);
         
      Bitmap bmp = new Bitmap(ms);
           
    ms.Close();
              return
    bmp;
          }

         
    ///
          /// 返回默认图片
         
    ///
          ///
          public
    Bitmap getInstance()
          {
       
        Bitmap bmp = DefaultPic();
         
      return bmp;
          }

     
      ///
          /// 选取本地图片
     
      ///
          ///
       
    ///
          public Bitmap LocalIMG(string
    IMG)
          {
           
    FileStream fs = new FileStream(IMG, FileMode.Open);
     
          Bitmap bmp = new Bitmap(fs);
       
        fs.Close();
             
    return bmp;
          }

         
    ///
          /// 返回流状态图片
         
    ///
          ///
         
    ///
          public Bitmap ImgFromBase64(string
    Img)
          {
           
    Bitmap bmp;
              byte[] buffer =
    Convert.FromBase64String(Img);
              if
    (buffer.Length > 0)
              {

                MemoryStream ms = new
    MemoryStream();
                 
    ms.Write(buffer, 0, buffer.Length);
             
      bmp = new Bitmap(ms);
             
      ms.Close();
               
    return bmp;
              }

            else
           
    {
                  bmp =
    DefaultPic() ;
                  return
    bmp;
              }
       
    }

          ///
         
    /// 默认图片
          ///
         
    ///
          private Bitmap DefaultPic()
     
      {
              FileStream fs = new
    FileStream(Application.StartupPath + @"Goodr.jpg", FileMode.Open);

            Bitmap bmp = new Bitmap(fs);
     
          fs.Close();
           
    return bmp;
          }

       
    ///
          /// GDI压缩图片
       
    ///
          /// 传入参数Bitmap
       
    ///
          public byte[] ImageGdi(Bitmap
    bmp)
          {
           
    Bitmap xbmp = new Bitmap(bmp);
           
    MemoryStream ms = new MemoryStream();
         
      xbmp.Save(ms, ImageFormat.Jpeg);
         
      byte[] buffer;
             
    ms.Flush();
              if (ms.Length >
    95000)
              {
       
            //buffer = ms.GetBuffer();
     
              double new_width = 0;
     
              double new_height = 0;

             
      Image m_src_image = Image.FromStream(ms);
       
            if (m_src_image.Width >=
    m_src_image.Height)
                 
    {
                     
    new_width = 1024;
                 
      new_height = new_width * m_src_image.Height /
    (double)m_src_image.Width;
               
    }
                  else if
    (m_src_image.Height >= m_src_image.Width)
         
          {
             
          new_height = 768;
         
              new_width = new_height *
    m_src_image.Width / (double)m_src_image.Height;
         
          }

             
      Bitmap bbmp = new Bitmap((int)new_width, (int)new_height,
    m_src_image.PixelFormat);
               
    Graphics m_graphics = Graphics.FromImage(bbmp);
       
            m_graphics.SmoothingMode =
    System.Drawing.Drawing2D.SmoothingMode.HighQuality;
       
            m_graphics.InterpolationMode =
    System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic;
     
              m_graphics.DrawImage(m_src_image, 0,
    0, bbmp.Width, bbmp.Height);

             
      ms = new MemoryStream();

           
        bbmp.Save(ms, ImageFormat.Jpeg);
       
            buffer = ms.GetBuffer();
     
              ms.Close();

     
              return buffer;
       
        }
             
    else
              {
       
            buffer = ms.GetBuffer();
     
              ms.Close();
       
            return buffer;
         
      }
          }
      }
    }

  • 相关阅读:
    博客园安卓客户端合仔茶版本V4.0震撼发布
    提示功能的检索框
    .net 玩自动化浏览器
    《表单篇》DataBase之大数据量经验总结
    自定义表主键
    一次网络程序Debug过程
    关于.NET下开源及商业图像处理(PSD)组件
    利用反射从程序集dll中动态调用方法
    Linux内核源码分析方法
    wcf基础教程之 契约(合同)Contract
  • 原文地址:https://www.cnblogs.com/Veky/p/3256083.html
Copyright © 2020-2023  润新知