zoukankan      html  css  js  c++  java
  • c#生成缩略图

    publicstaticvoidGenThumbnail(Image imageFrom,stringpathImageTo,intwidth,intheight)

            {
     
                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;
                }
                // 创建画布
                Bitmap bmp=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
                {
                    bmp.Dispose();
                    g.Dispose();
                }
    }
  • 相关阅读:
    python中关于with以及contextlib的使用
    Python之Redis操作
    Python操作memecache
    COM组件技术名称解释
    C++11-新增正则表达式
    BSTR与char*、cstring、CComBSTR的转换
    ATL字符宏使用以及代码测试
    获取与一个磁盘的组织以及剩余空间容量有关的信息以及代码测试
    关于cstring ->string-> const char * 用U2A一步转换 错误的内存问题
    cstring、string、wstring、int、char*、tchar、 int、dword等相互转换代码输出测试
  • 原文地址:https://www.cnblogs.com/bile/p/3168792.html
Copyright © 2011-2022 走看看