当前位置:首页 > Windows程序 > 正文

C#图片压缩上传

2024-03-31 Windows程序

/// <summary> /// 压缩图片 /// </summary> /// <param>图片文件</param> /// <param>路径</param> 例如 var outPath = Path.Combine(Request.MapPath("~/Upload"), Path.GetFileName(file.FileName)); /// <param>值越大代表图片质量越好,,一般默认控制在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></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>文件流</param> /// <param>保存文件路径</param> /// <param>处理警告信息,若为空,则处理成功</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 ""; } }

温馨提示: 本文由Jm博客推荐,转载请保留链接: https://www.jmwww.net/file/56703.html

Jm-杰米博客Jamie
草根站长的技术交流乐园!IT不会不要紧快来好好学习吧!
  • 20786文章总数
  • 7494633访问次数
  • 建站天数
  • 友情链接