zoukankan      html  css  js  c++  java
  • C#剪切生成高质量缩放图片

    /// <summary>
            /// 高质量缩放图片
            /// </summary>
            /// <param name="OriginFilePath">源图的路径</param>
            /// <param name="TargetFilePath">存储缩略图的路径</param>
            /// <param name="DestWidth">缩放后图片宽度</param>
            /// <param name="DestHeight">缩放后图片高度</param>
            /// <returns>表明此次操作是否成功</returns>
            public static bool ToSuolue(System.IO.Stream oStream, string TargetFilePath, int towidth, int toheight)
            {
                //System.Drawing.Image OriginImage = System.Drawing.Image.FromFile(OriginFilePath);
                System.Drawing.Image OriginImage = System.Drawing.Image.FromStream(oStream);
                System.Drawing.Imaging.ImageFormat thisFormat = OriginImage.RawFormat;
                //按比例缩放
                int x = 0, y = 0;
                int ow = OriginImage.Width;
                int oh = OriginImage.Height;
    
                if ((double)ow / (double)oh > (double)towidth / (double)toheight)
                {
                    oh = OriginImage.Height;
                    ow = OriginImage.Height * towidth / toheight;
                    y = 0;
                    x = (OriginImage.Width - ow) / 2;
                }
                else
                {
                    ow = OriginImage.Width;
                    oh = OriginImage.Width * toheight / towidth;
                    x = 0;
                    y = (OriginImage.Height - oh) / 2;
                }
    
                Bitmap bt = new Bitmap(towidth, toheight); //根据指定大小创建Bitmap实例
                using (Graphics g = Graphics.FromImage(bt))
                {
                    g.Clear(Color.White);
                    //设置画布的描绘质量
                    g.CompositingQuality = System.Drawing.Drawing2D.CompositingQuality.HighQuality;
                    g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;
                    g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic;
                    g.DrawImage(OriginImage, new Rectangle(0, 0, towidth, toheight),
                        new System.Drawing.Rectangle(x, y, ow, oh),
                    System.Drawing.GraphicsUnit.Pixel);
                    g.Dispose();
                }
    
                System.Drawing.Imaging.EncoderParameters EncoderParams = new System.Drawing.Imaging.EncoderParameters(); //取得内置的编码器
                long[] Quality = new long[1];
                Quality[0] = 100;
                System.Drawing.Imaging.EncoderParameter EncoderParam = new System.Drawing.Imaging.EncoderParameter(System.Drawing.Imaging.Encoder.Quality, Quality);
                EncoderParams.Param[0] = EncoderParam;
    
                //try
                //{
                    //获得包含有关内置图像编码解码器的信息的ImageCodecInfo 对象
                    System.Drawing.Imaging.ImageCodecInfo[] arrayICI = System.Drawing.Imaging.ImageCodecInfo.GetImageEncoders();
                    System.Drawing.Imaging.ImageCodecInfo jpegICI = null;
                    for (int i = 0; i < arrayICI.Length; i++)
                    {
                        if (arrayICI[i].FormatDescription.Equals("JPEG"))
                        {
                            jpegICI = arrayICI[i]; //设置为JPEG编码方式
                            break;
                        }
                    }
    
                    if (jpegICI != null) //保存缩略图
                    {
                        bt.Save(TargetFilePath, jpegICI, EncoderParams);
                    }
                    else
                    {
                        bt.Save(TargetFilePath, thisFormat);
                    }
                    OriginImage.Dispose();
                    return true;
                //}
                //catch (System.Runtime.InteropServices.ExternalException e1)  //GDI+发生一般错误
                //{
                //    return false;
                //}
                //catch (Exception e2)
                //{
                //    return false;
                //}
            }
  • 相关阅读:
    「Python」pandas入门教程
    「Python」字符串操作内置函数
    「Python」10个python项目
    python-基础入门-序
    提取网站图片
    c#图片添加水印
    js获取url传递的参数
    构建之法阅读笔记01
    学习进度条<第一周>
    30道四则运算<1>
  • 原文地址:https://www.cnblogs.com/paste/p/4191273.html
Copyright © 2011-2022 走看看