public class ImageData { public string imageFilePath { get; set; } public string tempFilePath { get; set; } }
ImageData data = new ImageData(); [HttpPost] public ImageData UploadFile() { HttpContext context = HttpContext.Current; if (context.Request.Files.Count == 0)//判断文件是否存在 return null; String outFilePath = context.Server.MapPath("~/ImageFile/"); string time = System.DateTime.Now.ToFileTimeUtc().ToString() + "/"; System.IO.Directory.CreateDirectory(outFilePath + time); string imageFilePath = outFilePath + time + context.Request.Files[0].FileName; context.Request.Files[0].SaveAs(imageFilePath); string thumbnailFilePath = outFilePath + time + "temp_" + context.Request.Files[0].FileName; getImage(imageFilePath, 60, 2, thumbnailFilePath); data.imageFilePath = "localhost:12380/ImageFile/" + time + context.Request.Files[0].FileName; data.tempFilePath = "localhost:12380/ImageFile/" + time + "temp_" + context.Request.Files[0].FileName; return data; } ////// 生成缩略图 /// /// 原始图片文件 /// 质量压缩比 /// 收缩倍数 /// 输出文件名 ///成功返回true,失败则返回false public static bool getImage(String sourceFile, long quality, int multiple, String outputFile) { try { long imageQuality = quality; Bitmap sourceImage = new Bitmap(sourceFile); ImageCodecInfo myImageCodecInfo = GetEncoderInfo("image/jpeg"); System.Drawing.Imaging.Encoder myEncoder = System.Drawing.Imaging.Encoder.Quality; EncoderParameters myEncoderParameters = new EncoderParameters(1); EncoderParameter myEncoderParameter = new EncoderParameter(myEncoder, imageQuality); myEncoderParameters.Param[0] = myEncoderParameter; float xWidth = sourceImage.Width; float yWidth = sourceImage.Height; Bitmap newImage = new Bitmap((int)(xWidth / multiple), (int)(yWidth / multiple)); Graphics g = Graphics.FromImage(newImage); g.DrawImage(sourceImage, 0, 0, xWidth / multiple, yWidth / multiple); g.Dispose(); newImage.Save(outputFile, myImageCodecInfo, myEncoderParameters); return true; } catch { return false; } } ////// 获取图片编码信息 /// private static ImageCodecInfo GetEncoderInfo(String mimeType) { int j; ImageCodecInfo[] encoders; encoders = ImageCodecInfo.GetImageEncoders(); for (j = 0; j < encoders.Length; ++j) { if (encoders[j].MimeType == mimeType) return encoders[j]; } return null; }