您的位置:首页 > 其它

图片与压缩 (学习笔记)

2017-01-12 23:34 190 查看
refer:
http://blog.csdn.net/qq_16542775/article/details/51792092http://www.cnblogs.com/xinzhao/p/5130410.html⁠⁠⁠⁠https://zhidao.baidu.com/question/495382546600556724.htmlhttps://zh.m.wikipedia.org/zh/无损数据压缩
先说说常用的图片格式:

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:https://github.com/think2011/localResizeIMG
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: