zoukankan      html  css  js  c++  java
  • 生成高质量缩略图

    调用:

    View Code
    1 int width = 190;
    2 int height = 190;
    3 Bitmap source = new Bitmap("c:\\someimage.jpg");
    4 System.Drawing.Image thumb = source.GetThumbnailImage(width,height,null,IntPtr.Zero);
    5 thumb.Save("C:\\someimageshot.jpg");
    6 thumb.Dispose();

    函数:

    View Code
     1 public static Bitmap CreateThumbnail(Bitmap source, int thumbWi, int thumbHi, bool maintainAspect)
     2         {
     3             if (source.Width < thumbWi && source.Height < thumbHi) return source;
     4             System.Drawing.Bitmap ret = null;
     5             try
     6             {
     7                 int wi, hi;
     8 
     9                 wi = thumbWi;
    10                 hi = thumbHi;
    11 
    12                 if (maintainAspect)
    13                 {
    14                     if (source.Width > source.Height)
    15                     {
    16                         wi = thumbWi;
    17                         hi = (int)(source.Height * ((decimal)thumbWi / source.Width));
    18                     }
    19                     else
    20                     {
    21                         hi = thumbHi;
    22                         wi = (int)(source.Width * ((decimal)thumbHi / source.Height));
    23                     }
    24                 }
    25                 ret = new Bitmap(wi, hi);
    26                 using (Graphics g = Graphics.FromImage(ret))
    27                 {
    28                     g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic;
    29                     g.FillRectangle(Brushes.White, 0, 0, wi, hi);
    30                     g.DrawImage(source, 0, 0, wi, hi);
    31                 }
    32             }
    33             catch
    34             {
    35                 ret = null;
    36             }
    37 
    38             return ret;
    39         }

    另类用途:

    比如某张云图特别大。要在首页上缩小显示。第一想法就是强制设定img的width和height。这个方法对ie8完美运行。但是ie7和6会出现图片压缩严重失真现象。这时就可以用大图转成缩略图来实现。读取大图的时候生成缩略图,并读取缩略图。下次再thumb.Save同一个缩略图文件。这样也不占用空间。

  • 相关阅读:
    程序员偷偷深爱的9个不良编程习惯
    JQuery实现放大镜
    ACM1995
    liubo.im
    Linux中的一些点
    EPOLL使用详解
    Elays'Blog
    c#数据库解析
    codeforces #332 div 2 D. Spongebob and Squares
    类型
  • 原文地址:https://www.cnblogs.com/wanghafan/p/2493956.html
Copyright © 2011-2022 走看看