C#图片无损压缩

/// 使用方法:本方法由于内部统一设置dHeight,dWidth和原图片的长宽一致,所以图片的大小一样。
/// flag:压缩率,这里仅仅压缩像素,不改变图片的外观大小(既长宽)
/// 无损压缩图片
/// <param name="sFile">原图片</param>
/// <param name="dFile">压缩后保存位置</param>
/// <param name="dHeight">高度</param>
/// <param name="dWidth"></param>
/// <param name="flag">压缩质量(数字越小压缩率越高) 1-100</param>
/// <returns></returns>

public static bool GetPicThumbnail(Stream sFile, string dFile, int dHeight, int dWidth, int flag)
{
Image iSource = Image.FromStream(sFile);
ImageFormat tFormat = iSource.RawFormat;
int sW = 0, sH = 0;

//如果需要调节图片的长宽大小需要注释下面两行代码
dHeight = iSource.Height;
dWidth = iSource.Width;
//按比例缩放
Size tem_size = new Size(iSource.Width, iSource.Height);

if (tem_size.Width > dHeight || tem_size.Width > dWidth)
{
if ((tem_size.Width * dHeight) > (tem_size.Width * dWidth))
{
sW = dWidth;
sH = (dWidth * tem_size.Height) / tem_size.Width;
}
else
{
sH = dHeight;
sW = (tem_size.Width * dHeight) / tem_size.Height;
}
}
else
{
sW = tem_size.Width;
sH = tem_size.Height;
}

Bitmap ob = new Bitmap(dWidth, dHeight);
Graphics g = Graphics.FromImage(ob);

g.Clear(Color.WhiteSmoke);
g.CompositingQuality = CompositingQuality.HighQuality;
g.SmoothingMode = SmoothingMode.HighQuality;
g.InterpolationMode = InterpolationMode.HighQualityBicubic;

g.DrawImage(iSource, new Rectangle((dWidth - sW) / 2, (dHeight - sH) / 2, sW, sH), 0, 0, iSource.Width, iSource.Height, GraphicsUnit.Pixel);

g.Dispose();
//以下代码为保存图片时,设置压缩质量
EncoderParameters ep = new EncoderParameters();
long[] qy = new long[1];
qy[0] = flag;//设置压缩的比例1-100
EncoderParameter eParam = new EncoderParameter(System.Drawing.Imaging.Encoder.Quality, qy);
ep.Param[0] = eParam;
try
{
ImageCodecInfo[] arrayICI = ImageCodecInfo.GetImageEncoders();
ImageCodecInfo jpegICIinfo = null;
for (int x = 0; x < arrayICI.Length; x++)
{
if (arrayICI[x].FormatDescription.Equals("JPEG"))
{
jpegICIinfo = arrayICI[x];
break;
}
}
if (jpegICIinfo != null)
{
ob.Save(dFile, jpegICIinfo, ep);//dFile是压缩后的新路径
}
else
{
ob.Save(dFile, tFormat);
}
return true;
}
catch
{
return false;
}
finally
{
iSource.Dispose();
ob.Dispose();
}

时间: 2025-01-02 01:36:44

C#图片无损压缩的相关文章

如何使用jpegtran 压缩png图片

OptiPNG – Google推荐的png图片无损压缩工具下载及使用教程 2014年08月24日 实用软件 暂无评论 optipng png图片无损压缩工具介绍: optipng png图片无损压缩工局可以让图片更加的简化,缩小图片的容量,从而增加网络的传输速度.同时也是谷歌推荐的png图片压缩工具之一.谷歌原文地址:https://developers.google.com/speed/docs/insights/OptimizeImages optipng png图片无损压缩工具官方下载地

HTML基础标签图片文本超链接列表表格表单介绍

1.HTML基础标签图片常见代码形式<img src="图片路径地址" alt="属性名" title="占位符">常见的图片格式为以下三种:.jpg(图片有损压缩,影响画质)..png(图片无损压缩.容积大.具有透明通道)..gif(动图).图片路径地址分为本地图片和网络图片,本地图片中分为绝对路径(从盘符开始算起)和相对路径(从当前路径算起),相对路径属于平级关系,如果图片相对于上一级,表现形式为"../"在&

图片批量压缩工具Caesium Portable便携版

1.软件名称Caesium Portable版本:1.7.0 解压后大小:59M 2.软件简介能将图片无损压缩,不会造成图片失帧的软件.辛辛苦苦制作好的图片在上传到网络时却因为图片太大而上传失败!自己做好的网站,却因为图片文件过大,而打开缓慢.怎么办?找Caesium来帮忙吧!它可以在保证图片原有品质的同时,将图片大小减少90%,就是如此神奇!而且Caesium操作简单,可以同时压缩数张图片,可自定义图片质量,在操作的同时还可以即时预览压缩前后的图片呢! 3.软件功能1.使用智能压缩算法,图片压

前端优化带来的思考,浅谈前端工程化

重复优化的思考 这段时间对项目做了一次整体的优化,全站有了20%左右的提升(本来载入速度已经1.2S左右了,优化度很低),算一算已经做了四轮的全站性能优化了,回顾几次的优化手段,基本上几个字就能说清楚: 传输层面:减少请求数,降低请求量执行层面:减少重绘&回流 传输层面的从来都是优化的核心点,而这个层面的优化要对浏览器有一个基本的认识,比如: ① 网页自上而下的解析渲染,边解析边渲染,页面内CSS文件会阻塞渲染,异步CSS文件会导致回流 ② 浏览器在document下载结束会检测静态资源,新开线

(转载)前端构建工具gulp使用

前端构建工具gulp使用 前端自动化流程工具,用来合并文件,压缩等. Gulp官网 http://gulpjs.com/ Gulp中文网 http://www.gulpjs.com.cn/ Gulp中文文档 https://github.com/lisposter/gulp-docs-zh-cn Gulp插件网 http://gulpjs.com/plugins/ Awesome Gulp https://github.com/alferov/awesome-gulp StuQ-Gulp实战和原

前端优化带来的思考,浅谈前端工程化【转】

重复优化的思考 这段时间对项目做了一次整体的优化,全站有了20%左右的提升(本来载入速度已经1.2S左右了,优化度很低),算一算已经做了四轮的全站性能优化了,回顾几次的优化手段,基本上几个字就能说清楚: 传输层面:减少请求数,降低请求量执行层面:减少重绘&回流 传输层面的从来都是优化的核心点,而这个层面的优化要对浏览器有一个基本的认识,比如: ① 网页自上而下的解析渲染,边解析边渲染,页面内CSS文件会阻塞渲染,异步CSS文件会导致回流 ② 浏览器在document下载结束会检测静态资源,新开线

经常用到的第三方工具

CSS图片拼合生成器:http://cn.spritegen.website-performance.org/ 设计理论学习指南:http://www.cocoachina.com/special/design/ 图片无损压缩70%:https://tinypng.com/ W3C官方Debug开发的HTML页面:http://validator.w3.org/ 贴图资源站:http://www.cgtextures.com/ Js正则表达式验证:http://jex.im/regulex/ 在

UI自动化技术在高德的实践

一.背景汽车导航作为ToB业务,需要满足不同汽车厂商在功能和风格上体现各自特色的需求.针对这种情况,传统的UI开发方式,基本上是一对一的特别定制.但是这种方式动辄就要500~600人日的工作量投入,成为业务发展的重要瓶颈.因此,能够对导航UI进行快速定制开发,成为汽车导航业务UI开发的必解课题. 高德地图技术团队希望打造一套快速精准的UI解决方案,通过自动化的方式生产UI代码,解放研发生产力的同时满足客户需求. 二.方案调研为了避免重复造轮子,我们调研了行业上现有的UI自动化生成方案.主要分为两

《入门图像处理》(一)计算机视觉入门

主要分为2个部分:opencv入门+tensorflow入门.穿插numpy+matplotlib入门知识 1.安装tensorflow1.10和opencv3.3.1: 安装tensorflow和opencv: pip install --upgrade --ignore-installed tensorflow==1.10 -i https://pypi.douban.com/simple/ pip install python-opencv -i https://pypi.douban.c