• 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();
    }

  • 相关阅读:
    随机生成字符串,可用来当id
    自己总结的关于uniapp项目用androidstuido打包成apk
    css3 滑动效果 门
    在数组里面随机获取随机的几个内容
    把一个数组分割成两个(不管奇数还是偶数)
    Mysql常用命令
    怎样才能彻底地删除多余输入法软件
    启动MySQL服务
    linux监控命令全覆盖
    浅谈MVC模式与SSH框架
  • 原文地址:https://www.cnblogs.com/yuanxiaoping_21cn_com/p/3047429.html
Copyright © 2020-2023  润新知