public static bool UpdatePerson(Person person) { if (person == null) { return(false); } using (MyPhotosContainer context = new MyPhotosContainer()) { IUnitOfWork unitOfWork = new UnitOfWork.UnitOfWork(context); Person oldPerson = unitOfWork.People.GetById(person.Id); if (oldPerson == null) { return(false); } if (person.Photo != null) { if (oldPerson.Photo != null) { PhotoFactory.Update(oldPerson.Photo, person.Photo); } else { oldPerson.Photo = PhotoFactory.Create(person.Photo); } } PersonFactory.Update(oldPerson, person); unitOfWork.Save(); return(true); } }
/// <summary> /// 加载图片 /// </summary> /// <param name="key"></param> /// <param name="width"></param> /// <param name="height"></param> /// <param name="release"></param> /// <returns></returns> public Stream LoadByImage(string key, int width, int height, int cutType) { var sourceFileName = ParsePath(key); if (width <= 0 && height <= 0)//输出原始图片 { return(new FileStream(sourceFileName, FileMode.Open, FileAccess.Read, FileShare.ReadWrite)); } else { var thumbKey = GetThumbKey(key, width, height, cutType); var f = new FileInfo(sourceFileName); var dir = f.Directory.FullName; string thumbFolder = Path.Combine(dir, "thumb"); if (!Directory.Exists(thumbFolder)) { Directory.CreateDirectory(thumbFolder); } string fileName = Path.Combine(thumbFolder, thumbKey); if (System.IO.File.Exists(fileName)) { return(new FileStream(fileName, FileMode.Open, FileAccess.Read, FileShare.ReadWrite)); } else { //一次只处理1个图片的缩略请求 lock (_lockObject) { if (System.IO.File.Exists(fileName)) { return(new FileStream(fileName, FileMode.Open, FileAccess.Read, FileShare.ReadWrite)); } else { //读取原图片,处理 var photo = PhotoFactory.Create(PathUtil.GetExtension(sourceFileName)); var format = sourceFileName.GetImageFormat(); using (MemoryStream ms = new MemoryStream()) { using (var source = new FileStream(sourceFileName, FileMode.Open, FileAccess.Read, FileShare.ReadWrite)) { switch (cutType) { case 1: if (format == ImageFormat.Jpeg) { using (var image = source.ToImage()) { using (var bitmap = image.Scale(width, height, ImageQuality.Height, Color.White)) { bitmap.SaveAs(ms, format, 75); } } } else { photo.ThumbByFill(source, ms, width, height, true); } break; case 2: photo.ThumbByCut(source, ms, width, height, true); break; case 3: photo.ThumbByFull(source, ms, width, height, true); break; case 4: photo.ThumbByPart(source, ms, width, height, true); break; } } ms.Seek(0, SeekOrigin.Begin); var bytes = ms.GetBuffer(); using (FileStream fs = new FileStream(fileName, FileMode.Create, FileAccess.Write, FileShare.None)) { fs.Write(bytes, 0, bytes.Length); } } //输出文件 return(new FileStream(fileName, FileMode.Open, FileAccess.Read, FileShare.ReadWrite)); } } } } }