将图片压缩成大小格式小的图片

将对图片的操作单独写一个内,代码如下:

  1 public class DoPic
  2     {
  3
  4         /// <summary>
  5         /// 将图片转成二进制流
  6         /// </summary>
  7         /// <param name="path"></param>
  8         /// <returns></returns>
  9         public static byte[] SaveImage(String path)
 10         {
 11             FileStream fs = new FileStream(path, FileMode.Open, FileAccess.Read); //将图片以文件流的形式进行保存
 12             BinaryReader br = new BinaryReader(fs);
 13             byte[] imgBytesIn = br.ReadBytes((int)fs.Length); //将流读入到字节数组中
 14             return imgBytesIn;
 15         }
 16
 17
 18         /// <summary>
 19         /// 现实二进制流代表的图片
 20         /// </summary>
 21         /// <param name="imgBytesIn"></param>
 22         public static void ShowImgByByte(byte[] imgBytesIn, string filePathIncludeName)
 23         {
 24             MemoryStream ms = new MemoryStream(imgBytesIn);
 25
 26             Bitmap bmp = new Bitmap(ms);
 27             bmp.Save(filePathIncludeName, ImageFormat.Bmp);
 28             ms.Close();
 29         }
 30
 31
 32
 33
 34
 35         /// <summary>
 36         /// 图像缩略图处理,无损压缩图片
 37         /// </summary>
 38         /// <param name="bytes">图像源数据</param>
 39         /// <param name="compression">压缩质量 1-100</param>
 40         /// <param name="thumbWidth">缩略图的宽</param>
 41         /// <param name="thumbHeight">缩略图的高</param>
 42         /// <returns></returns>
 43         public static byte[] ConvertToThumbnail(byte[] bytes, int compression = 100, int thumbWidth = 0, int thumbHeight = 0)
 44         {
 45             byte[] bs = null;
 46
 47             try
 48             {
 49                 if (bytes != null)
 50                 {
 51                     using (MemoryStream ms = new MemoryStream(bytes))
 52                     {
 53                         using (Bitmap srcimg = new Bitmap(ms))
 54                         {
 55                             if (thumbWidth == 0 && thumbHeight == 0)
 56                             {
 57                                 thumbWidth = srcimg.Width;
 58                                 thumbHeight = srcimg.Height;
 59                             }
 60                             using (Bitmap dstimg = new Bitmap(thumbWidth, thumbHeight))//图片压缩质量
 61                             {
 62                                 //从Bitmap创建一个System.Drawing.Graphics对象,用来绘制高质量的缩小图。
 63                                 using (Graphics gr = Graphics.FromImage(dstimg))
 64                                 {
 65                                     //把原始图像绘制成上面所设置宽高的缩小图
 66                                     Rectangle rectDestination = new Rectangle(0, 0, thumbWidth, thumbHeight);
 67                                     gr.Clear(Color.WhiteSmoke);
 68                                     gr.CompositingQuality = CompositingQuality.HighQuality;
 69                                     gr.SmoothingMode = SmoothingMode.HighQuality;
 70                                     gr.InterpolationMode = InterpolationMode.HighQualityBicubic;
 71                                     gr.DrawImage(srcimg, rectDestination, 0, 0, srcimg.Width, srcimg.Height, GraphicsUnit.Pixel);
 72
 73                                     EncoderParameters ep = new EncoderParameters(1);
 74                                     ep.Param[0] = new EncoderParameter(System.Drawing.Imaging.Encoder.Quality, compression);//设置压缩的比例1-100
 75                                     ImageCodecInfo[] arrayICI = ImageCodecInfo.GetImageEncoders();
 76                                     ImageCodecInfo jpegICIinfo = arrayICI.FirstOrDefault(t => t.FormatID == System.Drawing.Imaging.ImageFormat.Png.Guid);
 77                                     using (MemoryStream dstms = new MemoryStream())
 78                                     {
 79                                         if (jpegICIinfo != null)
 80                                         {
 81                                             dstimg.Save(dstms, jpegICIinfo, ep);
 82                                         }
 83                                         else
 84                                         {
 85                                             dstimg.Save(dstms, System.Drawing.Imaging.ImageFormat.Png);//保存到内存里
 86                                         }
 87                                         bs = new Byte[dstms.Length];
 88                                         dstms.Position = 0;
 89                                         dstms.Read(bs, 0, bs.Length);
 90                                     }
 91                                 }
 92                             }
 93                         }
 94                     }
 95                 }
 96             }
 97             catch (Exception ex)
 98             {
 99                 //LogManager.DefaultLogger.Error(LogConvert.ParseWebEx(ex), string.Concat("ConvertToThumbnail error.", thumbWidth, " ", thumbHeight));
100             }
101             return bs;
102         }
103
104
105     }

然后调用:

1 byte[] bys = DoPic.SaveImage(System.AppDomain.CurrentDomain.BaseDirectory + "timg.png");    //得到图片的Byte数组数据
2
3
4 byte[] newPic = DoPic.ConvertToThumbnail(bys, 1, 30, 30);     //将图片进行压缩
5
6
7 DoPic.ShowImgByByte(newPic, "E:\\a.png");          //重新将新的图片保存

原文地址:https://www.cnblogs.com/Johnfx-home/p/11245557.html

时间: 2024-11-06 11:25:50

将图片压缩成大小格式小的图片的相关文章

canvas将图片转成base64格式 以及 验证图片是否透明

logoImgUpload:function(file) { let self = this; self.formatUpload(file); let reader = new FileReader(); reader.readAsDataURL(file); reader.onload = function (e) { var img = new Image(); img.src = e.target.result; self.isAlphaBackground = false; // 缩放

Css调整图片大小[将大图片压缩成小图片]

<div style="width:设置宽px; height:设置高px; background-image: url('图片路径'); filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='图片路径',sizingMethod='scale'); float:left;background-size:设置宽px 设置高px;"> </div> 采用滤镜[filter]效果,实现大图片压缩

mac下如何将图片转换成PDF格式?

图片的格式有很多中,PDF也是经常使用的一种,那么如何将图片转换成PDF格式?除了可以通过软件进行转换格式之外,通过电脑的基本操作也是可以实现的!小编总结了具体的操作步骤,简单的计步就可以将您手中的图片转换成PDF格式,下面就和小编一起来看看具体是如何操作的吧! 将图片转换成PDF格式步骤: 第一步:选中你所有需要的图片 第二步:在编辑选项里面选择"全选" 第三步:选择"打印" 第四步:选择"储存为PDF

如何把图片转换成pdf格式的图片

现如今很多办公人员喜欢将图片转换成PDF格式的图片,因为PDF格式通常要比postscript文件小,可以单独处理每页适合,还可以将文字.字型.格式.颜色封装在一个文件内,并且可以包含超文本链接,声音和动态影像信息等,安全可靠性非常高.同时普通读者也是需要将图片转换成PDF格式的,对于他们而言,用PDF制作成的文件阅读起来具有纸质书的质感和阅读效果,那我们如何转换呢,今天就来介绍一下.步骤一:打开浏览器,进入百度首页,搜索迅捷PDF在线转换器.步骤二:进入转换器界面后,在导航栏上方选择文档转换,

怎样将PNG格式的图片转成PDF格式

都知道我们经常在网上看到的图片虽然有的看起来是一样,但是右击查看图片的属性都是不一样的.在这里小编问大家一个问题,你们知道如何将一般图片的格式转换=成PDF格式吗?就拿PNG转PDF格式来说,可能大部分人都不知道如何进行解决的.那下面不妨看看小编是如何操作的!1:在电脑桌面新建一个文件夹取名为PNG图片,然后将所要转换成PDF格式的PNG图片添加进去.2:然后可以借助到第三方工具:PDF转换工具来完成图片转换成PDF格式的操作.进入到如图所示软件的界面,选择到[图片转换PDF]这个栏目,栏目中就

如何将.jpg图片 转换成.eps 格式图片

在使用latex写作论文的时候,需要插入一些图片,但是往往有些图片不是eps格式的.虽然网上有如何插入jpg格式的图片方法,但是经过我实验后发现都不太管用.最后找到一个比较靠谱的方法,使用latx本身的图片转换功能.具体方法如下: 可以从MiKTex的目录下找到bmeps的应用文件.在我的电脑里路径是D:\ProText\MiKTeX\texmf\miktex\bin,是latex自己的bitmap to eps converter. 在DOS下,进入.jpg图片所在目录, 用语句bmeps 1

centos下 将(jgp、png)图片转换成webp格式

由于项目要求需要将jpg.png类型的图片  转换成webp格式,最开始使用了php gd类库里 imagewebp 方法实现,结果发现转换成的webp格式文件会偶尔出现空白内容的情况.像创建了一个透明图层的图片,但是尺寸和内存确跟转换成功的文件一般无二. 初想,可以找个办法判断一下图片是否无效的,网上找各种办法,结果无果.虽然失败了但是还是上一下代码,期待大神能协助完善方法. function imgToWebp($file=''){ if(is_file($file)){ $img = ge

asp.net 把图片压缩成zip之后再进行下载

//这是导出的js方法 function fundaochu() { var data = "keyword=GetImageListdaochu&type=daochu&modality=" + $(eventRow).attr("study_date") + "&strWhere=a.REGISTRATION_ID=" + $(eventRow).attr("reg_id") + " an

怎么把图片转成JPG格式

图片是一种信息媒介,现在已经成为生活中和工作中不可或缺的一种读取信息的方式了,但由于图片的格式种类有很多种,这也就导致了有的时候图片无法打开的现象,那该如何解决这一问题呢,答案是可以将其转换成JPG格式,因为JPG格式的通用性,可以保持图片的正常打开,现在就让小编来告诉大家是怎么转换的吧!第一步:打开电脑进入浏览器内搜索相关关键词"图片转JPG",找到相对应的在线转换的界面.第二步:进入到在线转换的界面后,点击导航栏上方的"文档转换",并在弹出来的下拉框内点击&qu