• Asp.net 实现图片缩放 无水印(方法二)


    public static System.Drawing.Image GetImage(string path)
            {
                try
                {
                    if (path.StartsWith("http"))//获取远程图片
                    {
                        System.Net.WebRequest request = System.Net.WebRequest.Create(path);
                        request.Timeout = 10000;
                        System.Net.HttpWebResponse httpresponse = (System.Net.HttpWebResponse)request.GetResponse();
                        Stream s = httpresponse.GetResponseStream();
                        return System.Drawing.Image.FromStream(s);
                    }
                    else//获取本地图片
                    {
                        return System.Drawing.Image.FromFile(path);
                    }
                }
                catch (Exception ex) { return null; }
            }
    
            public static void MakeThumbnail(string originalImagePath, string thumbnailPath, int width, int height, string mode)
            {
                System.Drawing.Image originalImage = GetImage(originalImagePath);// System.Drawing.Image.FromFile(HttpContext.Current.Server.MapPath(originalImagePath));
                if (originalImage == null)
                    return;
                int towidth = width;
                int toheight = height;
    
                int x = 0;
                int y = 0;
                int ow = originalImage.Width;
                int oh = originalImage.Height;
    
                if (mode == "EQU")//指定最大高宽,等比例缩放
                {
                    //if(height/oh>width/ow),如果高比例多,按照宽来缩放;如果宽的比例多,按照高来缩放
                    if (height * ow > width * oh)
                    {
                        mode = "W";
                    }
                    else
                    {
                        mode = "H";
                    }
                }
                switch (mode)
                {
                    case "HW"://指定高宽缩放(可能变形)                   
                        break;
                    case "W"://指定宽,高按比例                       
                        toheight = originalImage.Height * width / originalImage.Width;
                        break;
                    case "H"://指定高,宽按比例   
                        towidth = originalImage.Width * height / originalImage.Height;
                        break;
                    case "Cut"://指定高宽裁减(不变形)                   
                        if ((double)originalImage.Width / (double)originalImage.Height > (double)towidth / (double)toheight)
                        {
                            oh = originalImage.Height;
                            ow = originalImage.Height * towidth / toheight;
                            y = 0;
                            x = (originalImage.Width - ow) / 2;
                        }
                        else
                        {
                            ow = originalImage.Width;
                            oh = originalImage.Width * height / towidth;
                            x = 0;
                            y = (originalImage.Height - oh) / 2;
                        }
                        break;
                    default:
                        break;
                }
    
                //新建一个bmp图片   
                System.Drawing.Image bitmap = new System.Drawing.Bitmap(towidth, toheight);
    
                //新建一个画板   
                System.Drawing.Graphics g = System.Drawing.Graphics.FromImage(bitmap);
    
                //设置高质量插值法   
                g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.High;
    
                //设置高质量,低速度呈现平滑程度   
                g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;
    
                //清空画布并以透明背景色填充   
                g.Clear(System.Drawing.Color.Transparent);
    
                //在指定位置并且按指定大小绘制原图片的指定部分   
                g.DrawImage(originalImage, new System.Drawing.Rectangle(0, 0, towidth, toheight),
                    new System.Drawing.Rectangle(x, y, ow, oh),
                    System.Drawing.GraphicsUnit.Pixel);
                try
                {
                    //以jpg格式保存缩略图   
                    bitmap.Save(thumbnailPath, System.Drawing.Imaging.ImageFormat.Jpeg);
                }
                catch (System.Exception e)
                {
                    throw e;
                }
                finally
                {
                    originalImage.Dispose();
                    bitmap.Dispose();
                    g.Dispose();
                }
            }
  • 相关阅读:
    git日常使用的常用命令总结
    wordpress-技术博客主题推荐
    git日常使用的常用命令总结
    wordpress-技术博客主题推荐
    Centos系统安装Python3.7
    LeetCode-----翻转二叉树
    搭建 WordPress 博客教程
    echarts 去掉网格线
    调整柱状图圆角弧度
    Echarts设置y轴值间隔 以及设置 barWidth : 30,//柱图宽度
  • 原文地址:https://www.cnblogs.com/vip-ygh/p/3569547.html
Copyright © 2020-2023  润新知