zoukankan      html  css  js  c++  java
  • C#处理缩略图的算法

    private byte[] thumbnail(HttpContext context, byte[] bytes)
    {
    //System.Drawing.Image thumbnail_image = null;
    System.Drawing.Image original_image = null;
    System.Drawing.Bitmap final_image = null;
    System.Drawing.Graphics graphic = null;

    Stream s = new MemoryStream(bytes);

    MemoryStream ms = null;
    // Retrieve the uploaded image
    original_image = System.Drawing.Image.FromStream(s);

    // Calculate the new width and height
    int width = original_image.Width;
    int height = original_image.Height;
    int target_width = 100;
    int target_height = 100;
    int new_width, new_height;

    float target_ratio = (float)target_width / (float)target_height;
    float image_ratio = (float)width / (float)height;

    if (target_ratio > image_ratio)
    {
    new_height = target_height;
    new_width = (int)Math.Floor(image_ratio * (float)target_height);
    }
    else
    {
    new_height = (int)Math.Floor((float)target_width / image_ratio);
    new_width = target_width;
    }

    new_width = new_width > target_width ? target_width : new_width;
    new_height = new_height > target_height ? target_height : new_height;

    final_image = new System.Drawing.Bitmap(target_width, target_height);

    graphic = System.Drawing.Graphics.FromImage(final_image);

    graphic.FillRectangle(new System.Drawing.SolidBrush(System.Drawing.ColorTranslator.FromHtml("#EEFFFF")), new System.Drawing.Rectangle(0, 0, target_width, target_height));

    int paste_x = (target_width - new_width) / 2;
    int paste_y = (target_height - new_height) / 2;
    graphic.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic;
    graphic.DrawImage(original_image, paste_x, paste_y, new_width, new_height);

    ms = new MemoryStream();
    //final_image.MakeTransparent();
    final_image.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg);
    s.Close();
    s.Dispose();
    return ms.GetBuffer();
    }

  • 相关阅读:
    ASP.NET ValidationGroup 属性和CssClass 属性
    sql 在将 nvarchar 值 转换成数据类型 int 时失败。
    select 1 from table
    OLEDB和ODBC的区别
    ASP.NET 读数据库绑定到 TreeView 递归方式
    用python做网页抓取与解析入门笔记[zz]
    win8.1安装驱动出现“文件的哈希值不在指定的目录”的解决办法[zz]
    Linux磁盘IO监控[zz]
    硬盘内部硬件结构和工作原理详解[zz]
    fcitx五笔的安装[zz]
  • 原文地址:https://www.cnblogs.com/yuanxiaoping_21cn_com/p/3047429.html
Copyright © 2011-2022 走看看