您尚未登录,请登录后浏览更多内容! 登录 | 立即注册

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 4262|回复: 3

简单的C#图片压缩类-winform[原创]

[复制链接]

0

主题

0

听众

3

积分

应届毕业生

Rank: 1

性别
保密
听众数
0
买家信用
卖家信用
在线时间
0 小时
相册
0
发表于 2006-8-1 21:00:00 |显示全部楼层
程序员装备


  1. #region C#图片处理功能 -- BY DREAMDLM
  2. /*
  3. {*******************************************************************}
  4. {                                                                   }
  5. {                     C#图片处理功能-DREAMDLM                       }
  6. {                                                                   }
  7. {*******************************************************************}
  8. */
  9. #endregion

  10. using System;
  11. using System.Collections.Generic;
  12. using System.Text;
  13. using System.Drawing;
  14. using System.Drawing.Imaging;
  15. using System.IO;
  16. using System.Windows.Forms;

  17. namespace EU.EUClass
  18. {
  19.     class ImgGDI
  20.     {
  21.         public ImgGDI()
  22.         {
  23.             //构造函数
  24.         }

  25.         ///
  26.         /// Bitmap转换byte[]数组
  27.         ///
  28.         ///
  29.         ///
  30.         public byte[] Bmptobyte(Bitmap bmp)
  31.         {
  32.             MemoryStream ms = new MemoryStream();
  33.             bmp.Save(ms, ImageFormat.Jpeg);
  34.             ms.Flush();
  35.             byte[] buffer = ms.GetBuffer();
  36.             ms.Close();
  37.             return buffer;
  38.         }

  39.         ///
  40.         /// byte[]数组转换Bitmap
  41.         ///
  42.         ///
  43.         ///
  44.         public Bitmap bytetobmp(byte[] buffer)
  45.         {
  46.             MemoryStream ms = new MemoryStream();
  47.             ms.Write(buffer, 0, buffer.Length);
  48.             Bitmap bmp = new Bitmap(ms);
  49.             ms.Close();
  50.             return bmp;
  51.         }

  52.         ///
  53.         /// 返回默认图片
  54.         ///
  55.         ///
  56.         public Bitmap getInstance()
  57.         {
  58.             Bitmap bmp = DefaultPic();
  59.             return bmp;
  60.         }

  61.         ///
  62.         /// 选取本地图片
  63.         ///
  64.         ///
  65.         ///
  66.         public Bitmap LocalIMG(string IMG)
  67.         {
  68.             FileStream fs = new FileStream(IMG, FileMode.Open);
  69.             Bitmap bmp = new Bitmap(fs);
  70.             fs.Close();
  71.             return bmp;
  72.         }

  73.         ///
  74.         /// 返回流状态图片
  75.         ///
  76.         ///
  77.         ///
  78.         public Bitmap ImgFromBase64(string Img)
  79.         {
  80.             Bitmap bmp;
  81.             byte[] buffer = Convert.FromBase64String(Img);
  82.             if (buffer.Length > 0)
  83.             {
  84.                 MemoryStream ms = new MemoryStream();
  85.                 ms.Write(buffer, 0, buffer.Length);
  86.                 bmp = new Bitmap(ms);
  87.                 ms.Close();
  88.                 return bmp;
  89.             }
  90.             else
  91.             {
  92.                 bmp = DefaultPic() ;
  93.                 return bmp;
  94.             }
  95.         }

  96.         ///
  97.         /// 默认图片
  98.         ///
  99.         ///
  100.         private Bitmap DefaultPic()
  101.         {
  102.             FileStream fs = new FileStream(Application.StartupPath + @"\Goodr.jpg", FileMode.Open);
  103.             Bitmap bmp = new Bitmap(fs);
  104.             fs.Close();
  105.             return bmp;
  106.         }

  107.         ///
  108.         /// GDI压缩图片
  109.         ///
  110.         /// 传入参数Bitmap
  111.         ///
  112.         public byte[] ImageGdi(Bitmap bmp)
  113.         {
  114.             Bitmap xbmp = new Bitmap(bmp);
  115.             MemoryStream ms = new MemoryStream();
  116.             xbmp.Save(ms, ImageFormat.Jpeg);
  117.             byte[] buffer;
  118.             ms.Flush();
  119.             if (ms.Length > 95000)
  120.             {
  121.                 //buffer = ms.GetBuffer();
  122.                 double new_width = 0;
  123.                 double new_height = 0;

  124.                 Image m_src_image = Image.FromStream(ms);
  125.                 if (m_src_image.Width >= m_src_image.Height)
  126.                 {
  127.                     new_width = 1024;
  128.                     new_height = new_width * m_src_image.Height / (double)m_src_image.Width;
  129.                 }
  130.                 else if (m_src_image.Height >= m_src_image.Width)
  131.                 {
  132.                     new_height = 768;
  133.                     new_width = new_height * m_src_image.Width / (double)m_src_image.Height;
  134.                 }

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

  140.                 ms = new MemoryStream();

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

  144.                 return buffer;
  145.             }
  146.             else
  147.             {
  148.                 buffer = ms.GetBuffer();
  149.                 ms.Close();
  150.                 return buffer;
  151.             }
  152.         }
  153.     }
  154. }
复制代码

[修改时间:2006-8-1 10:44:45  修改人:dreamdlm 等级:初级会员]

599

主题

1

听众

874

积分

高级程序员

Rank: 25

性别
听众数
1
买家信用
卖家信用
在线时间
73 小时
相册
0

高端人才勋章 版主勋章 管理员勋章 开发团队勋章 社区元老勋章

发表于 2006-8-1 10:41:00 |显示全部楼层

回复

请标明原创呀
回复

使用道具 举报

2552

主题

15

听众

3161

积分

管理员

Rank: 75Rank: 75Rank: 75

性别
听众数
15
买家信用
卖家信用
在线时间
1426 小时
相册
0

版主勋章 管理员勋章 特殊贡献勋章 原创先锋勋章 解答高手勋章 新人进步勋章 智慧卓越勋章 开发团队勋章 在线之星勋章 社区元老勋章 无私奉献勋章 最佳创意勋章 勤奋学习勋章

发表于 2009-8-25 23:43:00 |显示全部楼层
相当不错,对于图片的附件管理有相当的功效。感谢分享。
CNNTEC超越想像...无限可能!!
Asp.net工具下载→点这里
Asp.net新手上路→点这里
Asp.net技术交流→点这里
Asp.net相关书藉、视频教程→点这里
回复

使用道具 举报

0

主题

0

听众

26

积分

应届毕业生

Rank: 1

性别
保密
听众数
0
买家信用
卖家信用
在线时间
9 小时
相册
0
发表于 2011-4-13 19:19:00 |显示全部楼层
谢谢,正是我需要的
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册


关闭

站长推荐上一条 /1 下一条



      
    Archiver|手机版|臣迅电子商务|网站地图|渝ICP备11003388号

GMT+8, 2012-5-20 09:02

© 2001-2011 Powered by Discuz! X2.5. Theme By Yeei! update By CNNTEC

webSite begin 2005

回顶部