图片与压缩 (学习笔记)
2017-01-12 23:34
190 查看
refer:
http://blog.csdn.net/qq_16542775/article/details/51792092http://www.cnblogs.com/xinzhao/p/5130410.htmlhttps://zhidao.baidu.com/question/495382546600556724.htmlhttps://zh.m.wikipedia.org/zh/无损数据压缩
先说说常用的图片格式:
jpeg,jpg
有损
大部分网页图片都是jpg格式的.
特点就是小
PNG(无损)
特点是支持透明
Gif(无损)
特点是支持动画
质量压缩(有损要损和无损的区别)
有损指的是图片压缩后质量会流失,压缩过程中会丢失图片信息(由于人的肉眼有限,所以部分信息即使丢失了,我们在网页也是看不出来的)
无损是通过去除冗余信息实现的,过程中不会丢失信息,类似zipfile一样可以还原.
有损好处是可以压缩的很小.
尺寸压缩
尺寸指的是把1000px*1000px的图片压缩成100px*100px
这样也可以让图片体积变少.
asp.netc#代码:
privatestaticImageCodecInfoGetEncoderInfo(stringmimeType)
{
intj;
ImageCodecInfo[]encoders;
encoders=ImageCodecInfo.GetImageEncoders();
for(j=0;j<encoders.Length;++j)
{
if(encoders[j].MimeType==mimeType)
returnencoders[j];
}
returnnull;
}
尺寸压缩原理就是重绘,jscanvas也可以完成.质量压缩只能用于jpg.js也是可以做到的,只是兼容比较蛋疼../.\
refer:https://github.com/think2011/localResizeIMG
先说说常用的图片格式:
jpeg,jpg
有损
大部分网页图片都是jpg格式的.
特点就是小
PNG(无损)
特点是支持透明
Gif(无损)
特点是支持动画
质量压缩(有损要损和无损的区别)
有损指的是图片压缩后质量会流失,压缩过程中会丢失图片信息(由于人的肉眼有限,所以部分信息即使丢失了,我们在网页也是看不出来的)
无损是通过去除冗余信息实现的,过程中不会丢失信息,类似zipfile一样可以还原.
有损好处是可以压缩的很小.
尺寸压缩
尺寸指的是把1000px*1000px的图片压缩成100px*100px
这样也可以让图片体积变少.
asp.netc#代码:
try { longquality=90;//越高越清楚,越低size越小 inttargetWidth=800; inttargetHeight=0; stringoriginalPath=@"C:\keatkeat\myprojects\ThumbnailImage\Project\Project\test.jpg"; stringnewPath=@"C:\keatkeat\myprojects\ThumbnailImage\Project\Project\test123.jpg"; using(Bitmaporiginal=newBitmap(originalPath)) { ImageCodecInfocodecInfo=GetEncoderInfo("image/jpeg"); Encoderencoder=Encoder.Quality; EncoderParametersencoderParameters=newEncoderParameters(1); EncoderParameterencoderParameter=newEncoderParameter(encoder,quality); encoderParameters.Param[0]=encoderParameter; intnewWidth=0; intnewHeight=0; if(targetWidth!=0) { decimalratio=(decimal)targetWidth/original.Width; newWidth=targetWidth; newHeight=(int)(original.Height*ratio); } else { decimalratio=(decimal)targetHeight/original.Height; newHeight=targetHeight; newWidth=(int)(original.Width*ratio); } using(BitmapnewImage=newBitmap(newWidth,newHeight)) { newImage.SetResolution(original.HorizontalResolution,original.VerticalResolution); using(Graphicsg=Graphics.FromImage(newImage)) { g.SmoothingMode=SmoothingMode.HighQuality; g.InterpolationMode=InterpolationMode.HighQualityBicubic; g.PixelOffsetMode=PixelOffsetMode.HighQuality; g.DrawImage(original,0,0,newWidth,newHeight); } newImage.Save(newPath,codecInfo,encoderParameters); } } } catch(Exceptionex) { }
privatestaticImageCodecInfoGetEncoderInfo(stringmimeType)
{
intj;
ImageCodecInfo[]encoders;
encoders=ImageCodecInfo.GetImageEncoders();
for(j=0;j<encoders.Length;++j)
{
if(encoders[j].MimeType==mimeType)
returnencoders[j];
}
returnnull;
}
尺寸压缩原理就是重绘,jscanvas也可以完成.质量压缩只能用于jpg.js也是可以做到的,只是兼容比较蛋疼../.\
refer:
相关文章推荐
- 【学习笔记】少占用内存获取压缩图片
- 图片压缩_学习笔记
- android 根据uri获取路径及图片压缩、旋转的学习笔记
- Photoshop 学习笔记:2、实现圆角图片
- Symbian学习笔记之导入Bmp图片
- [学习笔记]java+oracle 存+ jsp 储图片到数据库中 b---读取
- WebKit 学习笔记(3) -- 图片和中文支持
- IDL学习笔记(3)--hdf文件SDS读取并显示为图片
- symbian学习笔记——打包图片
- aswing学习笔记3-在JPanel中,如何将.png格式的图片设置为背景?
- Silverlight学习笔记十二动态加载图片和显示提示(ToolTip)
- [学习笔记]java+oracle 存储图片到数据库中 a---存储
- 写得蛮好的linux学习笔记(压缩命令,vi一般用法,认识SHELL,正规表示法)
- 写得蛮好的linux学习笔记(三)(压缩命令)
- JQuery 学习笔记(一)超链接和图片提示效果
- SilverLight学习笔记--实际应用(二) 建立一个轮盘图片展示程序
- JPEG压缩学习笔记
- (源码实例)通过层DIV实现,当鼠标放在链接上面,显示图片及文字 - 流星絮语 JAVA学习笔记 - CSDNBlog
- latex学习笔记之添加图片http://hepg.sdu.edu.cn/Service/tips/latex/latexfig.html#1
- Silverlight之ListBox/Style学习笔记--ListBox版的图片轮换广告