C#图片压缩上传

时间:2022-04-14 06:54:02

/// <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 ""; } }