当前位置:编程学习 > C#/ASP.NET >>

分享一个简单而实用的缩略图方法

不知道大家网站上的缩略图是怎么"缩"的呢?

马上又要开始一个新的项目,过来这个公司养成了一个新的习惯,就是会把遇到的一些实用的程序保存下来.

我想这是一个好习惯..以前只是觉得存起来有用.现在是实际做到这一步了:"把有用的程序都保存下来"

这就是想与做的不同.

 

现在缩略图基本上有几种方式:

1.填充的方式

2.按高缩略

3.按宽缩略

4.切除方式

 

我简单地举例描述下这几种方式及它们的缺点(因为优点没啥好讲的):

1.就是把图片A按一定的宽跟高缩略,例如图片A的宽跟高是400*500,把它缩略成200*250,这样图片就是缩小了1/2,但有一个问题,假设我要把一个400*500的图片缩略成200*200的图,这样缩略下去.这个图就变形了.

2.按高跟宽缩略是指按指定的缩略高或宽缩略,例如图片A的宽跟高是400*500,我按宽缩略为200,那宽就是500*200/400=250了,如果我按高缩略为200,那高就是400*200/500=160,这样处理是没啥大问题,就是在页面上表示的时候,会出现个排列比较难处理.有处理过的朋友们应该会记得那个苦恼.

3.就是我按我要的宽跟高,例如是300*300把一张图片例如400*500把这个切300*300出来.剩下的都放弃.这样缩略会让用户上传的图,其中一部分看不到.

 

我想出一个方法,算是个折衷的方法吧,就是网页上通常都是需求固定大小的缩略图,如果我在一个资讯板块中,把无论宽跟高的所有图片都要缩略出一张200*200来当资讯图片,用第1种缩略方法有可能会把图片变形,用第二种方法没办法缩略成200*200的图片,用第三种会把图片的元素丢失.所以我觉得比较好的处理方法是这样:先画一张200*200白底的图片,再判断图片的宽跟高哪边大,假设高>宽,那就按高缩略,再把这缩略的图片以居中的方式放到那个200*200的白底图片上,完成缩略.

 

代码如下

\缩略图方法
/// <summary>
/// 生成缩略图
/// </summary>
/// <param name="originalImagePath">源图路径(物理路径)</param>
/// <param name="thumbnailPath">缩略图路径(物理路径)</param>
/// <param name="destLengthwidth">缩略图宽度高度</param> 
public static void MakeThumbnail( string originalImagePath, string thumbnailPath, int destLength ) {
    Image originalImage = Image.FromFile(originalImagePath);

    int ow = originalImage.Width;
    int oh = originalImage.Height;

    if (ow > oh) {
        oh = oh * destLength / ow;
        ow = destLength;
    }
    else {
        ow = ow * destLength / oh;
        oh = destLength;
    }

    int x = (destLength - ow) / 2;
    int y = (destLength - oh) / 2;

    Image bitmap = new System.Drawing.Bitmap(destLength, destLength);

    //新建一个画板
    Graphics g = System.Drawing.Graphics.FromI
补充:软件开发 , C# ,
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,