public bool BuildMemberCoverImage(String mid, String coverimgbackground, String coverfront) { Image coverback; Graphics g; try { coverback = Image.FromFile(coverimgbackground); } catch { return false; }; if (coverback == null) return false; BiZ.Member.Member mym = BiZ.MemberManager.MemberManager.GetMember(mid); if (mym.MemberPhoto.IconID == "") return false; //建立背景 g = System.Drawing.Graphics.FromImage(coverback); //设置高质量插值法 g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.High; //设置高质量,低速度呈现平滑程度 g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.AntiAlias; //加入用户头像 byte[] stream = new CBB.ImageHelper.ImageLoader().loadimage(mym.MemberInfomation.IconPath.Split('.')[0] + "_p.jpg"); Stream st = new MemoryStream(stream); Image membericon = Image.FromStream(st); g.DrawImage(membericon, new Rectangle(108, 44, membericon.Width, membericon.Height), 0, 0, membericon.Width, membericon.Height, GraphicsUnit.Pixel); //加入头像前遮罩 if (coverfront != "") { try { Image coverfrontimg = Image.FromFile(coverfront); g.DrawImage(coverfrontimg, new Rectangle(108, 44, coverfrontimg.Width, coverfrontimg.Height), 0, 0, coverfrontimg.Width, coverfrontimg.Height, GraphicsUnit.Pixel); } catch { } } //String Str1 = "我在米柚(Moooyo.com)获得"; //String Str2 = mym.Status.ScoreAvg.ToString("#0.0") + "分"; //g.DrawString(Str1, // new Font("黑体", 20, GraphicsUnit.Pixel), // new SolidBrush(Color.Black), // new PointF(230, 58)); //g.DrawString(Str2, // new Font("黑体", 50, GraphicsUnit.Pixel), // new SolidBrush(Color.Red), // new PointF(310, 98)); //String[] colors = new string[] { "#23C619", "#03642A", "#FF3399", "#933605", "#0066CC" }; //int[] lefts = new int[] { 110, 140, 40, 120, 50 }; //for (int i = 0; i < mym.MemberRelations.Marks.Count & i < 5; i++) //{ // g.DrawString(mym.MemberRelations.Marks[i].ContentCove, // new Font("黑体", 18, GraphicsUnit.Pixel), // new SolidBrush(ColorTranslator.FromHtml(colors[i])), // new PointF(lefts[i], 200 + i * 35)); //} g.Dispose(); MemoryStream imagestream = new MemoryStream(); coverback.Save(imagestream, System.Drawing.Imaging.ImageFormat.Jpeg); CBB.MongoDB.GridFSHelper.UploadFile(imagestream, "cover_" + mym.ID + ".jpg"); coverback.Dispose(); imagestream.Dispose(); return true; }
private string UploadPictureToTemporary(string memberId, string picturePath) { byte[] stream = new CBB.ImageHelper.ImageLoader().loadimage(picturePath.Split('.')[0] + "_p.jpg"); Stream st = new MemoryStream(stream); Image membericon = Image.FromStream(st); //图片的到临时文件夹 string filename = HttpContext.Server.MapPath("/temp_up_file/" + (DateTime.Now.ToString("yyyyMMddhhmmss") + DateTime.Now.Millisecond.ToString()) + ".jpg"); membericon.Save(filename, System.Drawing.Imaging.ImageFormat.Jpeg); return filename; }
//用户注册并选择兴趣上传图片后,创建一张用户展示图片,分享到用户版定的第三方平台 public static string getUserIconToShare(string memberid) { BiZ.Member.Member mym = BiZ.MemberManager.MemberManager.GetMember(memberid); //创建背景 Image coverback = Image.FromFile(HttpContext.Current.Server.MapPath("/pics/Register_UserIcon/upIcon_background.jpg")); Graphics g; //建立背景画布 g = System.Drawing.Graphics.FromImage(coverback); //设置高质量插值法 g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.High; //设置高质量,低速度呈现平滑程度 g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.AntiAlias; //画用户头像 Image membericon = null; int userIconX = 132; int userIconY = 87; int userIconWidth = 100; int userIconHeight = 100; if (mym.MemberInfomation == null || mym.MemberInfomation.IconPath == null || mym.MemberInfomation.IconPath.Trim() == "") { membericon = Image.FromFile(HttpContext.Current.Server.MapPath("/pics/noicon.jpg")); } else { byte[] stream = new CBB.ImageHelper.ImageLoader().loadimage(mym.MemberInfomation.IconPath.Split('.')[0] + "_p.jpg"); Stream st = new MemoryStream(stream); membericon = Image.FromStream(st); } membericon = new Bitmap(membericon, userIconWidth, userIconHeight); g.DrawImage(membericon, new Rectangle(userIconX, userIconY, userIconWidth, userIconHeight), 0, 0, userIconWidth, userIconHeight, GraphicsUnit.Pixel); //画用户昵称 String userNickName = mym.MemberInfomation.NickName; float nickNameX = coverback.Width / 2 - (userNickName.Length * 18) / 2 - 2; float nickNameY = userIconY + userIconHeight + 15; float nickNameSize = 18; g.DrawString(userNickName, new Font("微软雅黑", nickNameSize, GraphicsUnit.Pixel), new SolidBrush(Color.FromArgb(68, 68, 68)), new PointF(nickNameX, nickNameY)); //获取兴趣集合 IList<BiZ.InterestCenter.Interest> interests = BiZ.InterestCenter.InterestFactory.GetMemberInterest(memberid, 0, 0); IList<BiZ.InterestCenter.Interest> interestList = new List<BiZ.InterestCenter.Interest>(); //最多只能有三个兴趣 foreach (var obj in interests) { if (interestList.Count < 3) interestList.Add(obj); else break; } //创建画兴趣的相关参数 int interestWidth = 40; int interestHeight = 40; List<Font> fontList = new List<Font>() { new Font("微软雅黑", 25, GraphicsUnit.Pixel), new Font("微软雅黑", 18, GraphicsUnit.Pixel), new Font("微软雅黑", 25, GraphicsUnit.Pixel) }; List<SolidBrush> solidBrushList = new List<SolidBrush>() { new SolidBrush(Color.FromArgb(100, 160, 180)), new SolidBrush(Color.FromArgb(158, 1, 2)), new SolidBrush(Color.FromArgb(220, 140, 20)) }; List<PointF> pointFList = new List<PointF>() { new PointF(64, 284), new PointF(159, 319), new PointF(99, 344)}; List<Rectangle> rectangleList = new List<Rectangle>() { new Rectangle(104, 234, interestWidth, interestHeight), new Rectangle(159, 234, interestWidth, interestHeight), new Rectangle(214, 234, interestWidth, interestHeight)}; //读取兴趣外框 string border = HttpContext.Current.Server.MapPath("/pics/Register_UserIcon/upIcon_interest_boder.png"); System.IO.FileStream borderFileStream = new System.IO.FileStream(border, System.IO.FileMode.Open, System.IO.FileAccess.Read); System.IO.BinaryReader borderBinaryReader = new System.IO.BinaryReader(borderFileStream); long borderTotalBytes = new System.IO.FileInfo(border).Length; byte[] borderBytes = borderBinaryReader.ReadBytes((Int32)borderTotalBytes); Stream borderStream = new MemoryStream(borderBytes); Image interestBorder = Image.FromStream(borderStream); //加入兴趣 for (int i = 0; i < interestList.Count; i++) { //获取当前兴趣对象 var obj = interestList[i]; //获取兴趣的图标 string interestIconPath = obj.ICONPath; byte[] interestBytes = new CBB.ImageHelper.ImageLoader().loadimage(interestIconPath.Split('.')[0] + "_i.jpg"); Stream interestStream = new MemoryStream(interestBytes); Image interestIcon = Image.FromStream(interestStream); interestIcon = new Bitmap(interestIcon, interestWidth, interestHeight); //画兴趣图标 g.DrawImage(interestIcon, rectangleList[i], 0, 0, interestWidth, interestHeight, GraphicsUnit.Pixel); //画外框 g.DrawImage(interestBorder, rectangleList[i], 0, 0, interestWidth, interestHeight, GraphicsUnit.Pixel); //获取兴趣名称 string interestTitle = obj.Title; //画兴趣名称 g.DrawString(interestTitle, fontList[i], solidBrushList[i], pointFList[i]); } //释放画板 g.Dispose(); //保存画好的图片的到临时文件夹 string filename = "/temp_up_file/" + memberid + (DateTime.Now.ToString("yyyyMMddhhmmss") + DateTime.Now.Millisecond.ToString()) + ".jpg"; coverback.Save(HttpContext.Current.Server.MapPath(filename), System.Drawing.Imaging.ImageFormat.Jpeg); //释放图片对象 coverback.Dispose(); //放回图片地址 return filename; }
public ActionResult Get(String id) { //设置客户端缓存 String dataflag = "Sat, 07 Mar 2009 13:28:57 GMT"; Response.AddHeader("Cache-Control", "max-age = 315360000000"); Response.AddHeader("Last-Modified", dataflag); if (Request.Headers["If-Modified-Since"]!=null) if (Request.Headers["If-Modified-Since"].ToString().Trim() == dataflag) { Response.StatusCode = 304; return Content(""); } if (id == null) return RedirectToAction("Error", "Error", new { errorno = "404" }); byte[] stream = new byte[0]; bool errflag = false; try { stream = new CBB.ImageHelper.ImageLoader().loadimage(id); } catch { errflag = true; } if (stream != null && !errflag) { return base.File(stream, "image/jpeg"); } else { try { FileStream fs = new FileStream(Server.MapPath("/pics/" + id), FileMode.Open, FileAccess.Read); byte[] pReadByte = new byte[0]; BinaryReader r = new BinaryReader(fs); r.BaseStream.Seek(0, SeekOrigin.Begin); //将文件指针设置到文件开 pReadByte = r.ReadBytes((int)r.BaseStream.Length); return base.File(pReadByte, "image/jpeg"); } catch { return RedirectToAction("Error", "Error", new { errorno = "404" }); } } }