时间:2021-05-28
先看代码:
usingSystem;
usingSystem.Drawing;
usingSystem.Drawing.Imaging;
usingSystem.Drawing.Drawing2D;
///<summary>
///
///**生成高质量缩略图程序**
///
///File:GenerateThumbnail.cs
///
///Author:周振兴(Zxjay飘遥)
///
///E-Mail:tda7264@163.com
///
///Date:07-04-07
///
///</summary>
publicclassGenerateThumbnail
...{
///<summary>
///生成缩略图静态方法
///</summary>
///<paramname="pathImageFrom">源图的路径(含文件名及扩展名)</param>
///<paramname="pathImageTo">生成的缩略图所保存的路径(含文件名及扩展名)
///注意:扩展名一定要与生成的缩略图格式相对应</param>
///<paramname="width">欲生成的缩略图"画布"的宽度(像素值)</param>
///<paramname="height">欲生成的缩略图"画布"的高度(像素值)</param>
publicstaticvoidGenThumbnail(stringpathImageFrom,stringpathImageTo,intwidth,intheight)
...{
ImageimageFrom=null;
try
...{
imageFrom=Image.FromFile(pathImageFrom);
}
catch
...{
//throw;
}
if(imageFrom==null)
...{
return;
}
//源图宽度及高度
intimageFromWidth=imageFrom.Width;
intimageFromHeight=imageFrom.Height;
//生成的缩略图实际宽度及高度
intbitmapWidth=width;
intbitmapHeight=height;
//生成的缩略图在上述"画布"上的位置
intX=0;
intY=0;
//根据源图及欲生成的缩略图尺寸,计算缩略图的实际尺寸及其在"画布"上的位置
if(bitmapHeight*imageFromWidth>bitmapWidth*imageFromHeight)
...{
bitmapHeight=imageFromHeight*width/imageFromWidth;
Y=(height-bitmapHeight)/2;
}
else
...{
bitmapWidth=imageFromWidth*height/imageFromHeight;
X=(width-bitmapWidth)/2;
}
//创建画布
Bitmapbmp=newBitmap(width,height);
Graphicsg=Graphics.FromImage(bmp);
//用白色清空
g.Clear(Color.White);
//指定高质量的双三次插值法。执行预筛选以确保高质量的收缩。此模式可产生质量最高的转换图像。
g.InterpolationMode=InterpolationMode.HighQualityBicubic;
//指定高质量、低速度呈现。
g.SmoothingMode=SmoothingMode.HighQuality;
//在指定位置并且按指定大小绘制指定的Image的指定部分。
g.DrawImage(imageFrom,newRectangle(X,Y,bitmapWidth,bitmapHeight),newRectangle(0,0,imageFromWidth,imageFromHeight),GraphicsUnit.Pixel);
try
...{
//经测试.jpg格式缩略图大小与质量等最优
bmp.Save(pathImageTo,ImageFormat.Jpeg);
}
catch
...{
}
finally
...{
//显示释放资源
imageFrom.Dispose();
bmp.Dispose();
g.Dispose();
}
}
}
生成的缩略图大小一定,无剪裁、无变形。
可以测试一下各种图形格式、图形质量、呈现方式生成的缩略图的大小和视觉质量。
经测试:Vista原默认桌面.jpg格式尺寸:1024*768,
生成原尺寸大小的缩略图,比较如下:
原图.jpg格式,223KB
.jpg102KB
.png1816KB
.gif228KB
.tiff2000KB以上
…
视觉上除.gif质量较差外,其他的与源图肉眼无法区别(本人有点近视^-^)
在考虑到专利及通用性等因素,推荐用.jpg格式。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
本文实例讲述了C#简单生成缩略图的方法。分享给大家供大家参考。具体实现方法如下://////生成缩略图//////源图路径(物理路径)///缩略图路径(物理路径
php程序开发中经常涉及到生成缩略图,利用php生成缩略图这个过程本身没难度,但是你知道php能够优化调节生成的缩略图的质量吗?也就是说php能够控制生成缩略图
复制代码代码如下:///生成缩略图//////源图路径///缩略图路径///缩略图宽度///缩略图高度///生成缩略图的方式:HW指定高宽缩放(可能变形);W指
python生成指定尺寸的缩略图复制代码代码如下:defMakeThumb(path,sizes=(75,32,16)):"""缩略图生成程序byNeilChe
//////生成缩略图//////源图路径(物理路径)///缩略图路径(物理路径)///缩略图宽度///缩略图高度///生成缩略图的方式publicstatic