C#高质量无损压缩图片代码同享

///无损紧缩图片

///
///原图片地址
///紧缩后保存图片地址
///紧缩质量(数字越小紧缩率越高)1-100
///紧缩后图片的最大巨细
///是否是第一次调用
///
publicstaticboolCompressImage(stringsFile,stringdFile,intflag=90,intsize=300,boolsfsc=true)
{
ImageiSource=Image.FromFile(sFile);
ImageFormattFormat=iSource.RawFormat;
//如果是第一次调用,原始图画的巨细小于要紧缩的巨细,则直接仿制文件,并且回来true
FileInfofirstFileInfo=newFileInfo(sFile);
if(sfsc==true&&firstFileInfo.Length<size*1024)
{
firstFileInfo.CopyTo(dFile);
returntrue;
}
intdHeight=iSource.Height/2;
intdWidth=iSource.Width/2;
intsW=0,sH=0;
//按份额缩放
Sizetem_size=newSize(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;
}
Bitmapob=newBitmap(dWidth,dHeight);
Graphicsg=Graphics.FromImage(ob);
g.Clear(Color.WhiteSmoke);
g.CompositingQuality=System.Drawing.Drawing2D.CompositingQuality.HighQuality;
g.SmoothingMode=System.Drawing.Drawing2D.SmoothingMode.HighQuality;
g.InterpolationMode=System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic;
g.DrawImage(iSource,newRectangle((dWidth-sW)/2,(dHeight-sH)/2,sW,sH),0,0,iSource.Width,iSource.Height,GraphicsUnit.Pixel);
g.Dispose();

c#


//以下代码为保存图片时,设置紧缩质量
EncoderParametersep=newEncoderParameters();
long[]qy=newlong[1];
qy[0]=flag;//设置紧缩的份额1-100
EncoderParametereParam=newEncoderParameter(System.Drawing.Imaging.Encoder.Quality,qy);
ep.Param[0]=eParam;
try
{
ImageCodecInfo[]arrayICI=ImageCodecInfo.GetImageEncoders();
ImageCodecInfojpegICIinfo=null;
for(intx=0;x<arrayICI.Length;x++)
{
if(arrayICI[x].FormatDescription.Equals(“JPEG”))
{
jpegICIinfo=arrayICI[x];
break;
}
}
if(jpegICIinfo!=null)
{
ob.Save(dFile,jpegICIinfo,ep);//dFile是紧缩后的新途径
FileInfofi=newFileInfo(dFile);
if(fi.Length>1024*size)
{
flag=flag-10;
CompressImage(sFile,dFile,flag,size,false);
}
}
else
{
ob.Save(dFile,tFormat);
}
returntrue;
}
catch
{
returnfalse;
}
finally
{
iSource.Dispose();
ob.Dispose();
}
}

© 版权声明
好牛新坐标
版权声明:
1、IT大王遵守相关法律法规,由于本站资源全部来源于网络程序/投稿,故资源量太大无法一一准确核实资源侵权的真实性;
2、出于传递信息之目的,故IT大王可能会误刊发损害或影响您的合法权益,请您积极与我们联系处理(所有内容不代表本站观点与立场);
3、因时间、精力有限,我们无法一一核实每一条消息的真实性,但我们会在发布之前尽最大努力来核实这些信息;
4、无论出于何种目的要求本站删除内容,您均需要提供根据国家版权局发布的示范格式
《要求删除或断开链接侵权网络内容的通知》:https://itdw.cn/ziliao/sfgs.pdf,
国家知识产权局《要求删除或断开链接侵权网络内容的通知》填写说明: http://www.ncac.gov.cn/chinacopyright/contents/12227/342400.shtml
未按照国家知识产权局格式通知一律不予处理;请按照此通知格式填写发至本站的邮箱 wl6@163.com

相关文章