创建高质量缩略图

Thumbnail images are already supplied in certain image formats such as JPEG and TIFF. These are often provided by the camera used to take the picture and can be of very low resolution and sample quality. Unfortunately, if such an image exists you will be handed that one if you use the GetThumbnail method and such low quality images are of little use on screen because the thumbnail often needs to be enlarged before it can be used.

The only solution is to generate your own thumbnail image of the desired size from the full-sized original. This is accomplished by loading the original, creating an image of the desired size and drawing the original onto the thumbnail. The important thing is quality so in this example the interpolation mode quality is set to HighQualityBilinear which seems to give a slightly nicer effect than HighQualityBicubic. This setting is of course a matter of taste so perhaps you'd like to experiment to see which one you like the best.

    public Image GenerateThumbnail(Image original, int percentage)

    {

      
if(percentage<1)

        
throw new Exception("Thumbnail size must be aat least 1% of the original size");

      Bitmap tn
=new Bitmap((int)(original.Width*0.01f*percentage),(int)(original.Height*0.01f*percentage));

      Graphics g
=Graphics.FromImage(tn);

      g.InterpolationMode
=InterpolationMode.HighQualityBilinear; //experiment with this

      g.DrawImage(original, 
new Rectangle(0,0,tn.Width,tn.Height),0,0,original.Width,original.Height,GraphicsUnit.Pixel);

      g.Dispose();

      
return (Image)tn;

    }
posted @ 2007-07-19 20:06  Athrun  阅读(173)  评论(0编辑  收藏  举报