zoukankan      html  css  js  c++  java
  • C#图片压缩上传

       /// <summary>
            /// 压缩图片
            /// </summary>
            /// <param name="iSource">图片文件</param>
            /// <param name="outPath">路径</param> 例如 var outPath = Path.Combine(Request.MapPath("~/Upload"), Path.GetFileName(file.FileName));
            /// <param name="flag">值越大代表图片质量越好,一般默认控制在50为最佳压缩质量</param>
            /// <returns></returns>
            public static bool ReduceImage(Image iSource, string outPath, int flag)
            {
                ImageFormat tFormat = iSource.RawFormat;
                EncoderParameters ep = new EncoderParameters();
                long[] qy = new long[1];
                qy[0] = flag;
                EncoderParameter eParam = new EncoderParameter(System.Drawing.Imaging.Encoder.Quality, qy);
                ep.Param[0] = eParam;
                try
                {
                    ImageCodecInfo[] arrayICI = ImageCodecInfo.GetImageDecoders();
                    ImageCodecInfo jpegICIinfo = null;
                    for (int x = 0; x < arrayICI.Length; x++)
                    {
                        if (arrayICI[x].FormatDescription.Equals("JPEG"))
                        {
                            jpegICIinfo = arrayICI[x];
                            break;
                        }
                    }
                    if (jpegICIinfo != null)
                        iSource.Save(outPath, jpegICIinfo, ep);
                    else
                        iSource.Save(outPath, tFormat);
                    return true;
                }
                catch
                {
                    return false;
                }
                finally
                {
                    iSource.Dispose();
                }
            }
    

      图片类型转换

     /// <summary>
            ///byte[] 图片转换
            /// </summary>
            /// <param name="buffer"></param>
            /// <returns></returns>
            public static Image BytesToImage(byte[] buffer)
            {
                MemoryStream ms = new MemoryStream(buffer);
                Image image = System.Drawing.Image.FromStream(ms);
                return image;
            }
    

      

      /// <summary>
            /// 使用流方式,上传并保存文件
            /// </summary>
            /// <param name="s">文件流</param>
            /// <param name="savepath">保存文件路径</param>
            /// <param name="warning">处理警告信息,若为空,则处理成功</param>
            /// <returns>返回文件保存完整路径</returns>
            public static string uploadbystream(Stream s, string savepathFolder, out string warning)
            {
                try
                {
                    int be = 0;
                    if (s.Length > 0)
                    {
                        MemoryStream ms = new MemoryStream();
    
                        while ((be = s.ReadByte()) != -1)
                        {
                            ms.WriteByte((byte)be);
                        }
                        string reletiveFolder = "UploadFile\ManageImage\" + savepathFolder + "\" + DateTime.Now.Year + "\" + DateTime.Now.Month;
                        string folderPath = HttpContext.Current.Server.MapPath("~/") + reletiveFolder;
                        if (!Directory.Exists(folderPath))
                            Directory.CreateDirectory(folderPath);
                        string filename = DateTime.Now.ToString("yyyyMMddHHmmss") + ".jpg";
                        string newpath = folderPath + "\" + filename;
    
                        string lastpath = "";
                        lastpath = newpath;
                        //FileExistMapPath(newpath, FileCheckModel.M, out lastpath);
    
                        FileStream fs = new FileStream(lastpath, FileMode.Create);
    
                        ms.WriteTo(fs);
    
                        //释放
                        ms.Dispose();
                        fs.Dispose();
    
                        warning = "";
                        return reletiveFolder + "\" + filename;
                    }
    
                    warning = "error";
                    return "";
                }
                catch (Exception ex)
                {
                    warning = "error" + ex.Message;
                    return "";
                }
            }
    

      

  • 相关阅读:
    Web 组件是什么
    amazeui学习笔记二(进阶开发2)--Web组件简介Web Component
    .less为后缀的文件是什么
    amazeui学习笔记二(进阶开发1)--项目结构structure
    html中的瀑布流是什么
    HTML5 API 是什么
    epoll使用具体解释(精髓)
    DataTable.AcceptChanges方法有何用处
    cer, pfx 创建,而且读取公钥/密钥,加解密 (C#程序实现)
    超赞的.NET办公软件库
  • 原文地址:https://www.cnblogs.com/BraveBoy/p/6644332.html
Copyright © 2011-2022 走看看