private byte[] PutOverlayIcon(byte[] previewContent, string mimeType) { //decimal ratio = 640.0M / (decimal)img.Width; //Image zoomed = new Bitmap((int)(ratio * img.Width), (int)(ratio * img.Height)); //using (Graphics g = Graphics.FromImage(zoomed)) //{ // g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic; // g.DrawImage(img, new Rectangle(Point.Empty, zoomed.Size), new Rectangle(Point.Empty, img.Size), GraphicsUnit.Pixel); //} using (MemoryStream ms = new MemoryStream(previewContent)) { Image overlayed = Image.FromStream(ms); bool isHorizontal = overlayed.Width > overlayed.Height; string overlayPath = "~/Content/images/"; ScanTypeInfo sti = ScansHelper.GetTypeInfo(mimeType); if (sti.IsPdfDocument) { overlayPath = string.Format("{0}{1}_{2}.png", overlayPath, "pdf", isHorizontal ? "h" : "v"); } else if (sti.IsImage) { overlayPath = string.Format("{0}{1}_{2}.png", overlayPath, "img", isHorizontal ? "h" : "v"); } else if (sti.IsWordDocument) { overlayPath = string.Format("{0}{1}_{2}.png", overlayPath, "doc", isHorizontal ? "h" : "v"); } else { overlayPath = string.Format("{0}{1}_{2}.png", overlayPath, "inne", isHorizontal ? "h" : "v"); } Image overlay = Image.FromFile(Server.MapPath(overlayPath)); using (Graphics g = Graphics.FromImage(overlayed)) { g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic; g.DrawImage(overlay, new Rectangle(0, 0, overlayed.Width, overlayed.Height)); } using (MemoryStream mso = new MemoryStream()) { overlayed.Save(mso, ImageFormat.Png); return(mso.ToArray()); } } }
public ActionResult SaveRotated(Guid scanGuid, int?rotation) { if (rotation.HasValue && rotation % 4 == 0) { return(new EmptyResult()); } var sp = Context.Scans.Where(s => s.ScanID == scanGuid).FirstOrDefault(); if (sp == null) { return(new EmptyResult()); } ScanTypeInfo si = ScansHelper.GetTypeInfo(sp.MimeType); if (!(si.IsImage || si.IsPdfDocument)) { return(new EmptyResult()); } int rotationType = rotation.Value % 4; RotateFlipType rft = RotateFlipType.RotateNoneFlipNone; switch (rotationType) { case 0: rft = RotateFlipType.RotateNoneFlipNone; break; case 1: rft = RotateFlipType.Rotate90FlipNone; break; case 2: rft = RotateFlipType.Rotate180FlipNone; break; case 3: rft = RotateFlipType.Rotate270FlipNone; break; } using (MemoryStream ms = new MemoryStream(sp.ScanZoom.ToArray())) { Image img = Image.FromStream(ms); img.RotateFlip(rft); using (MemoryStream oms = new MemoryStream()) { img.Save(oms, si.Format); sp.ScanZoom = oms.ToArray(); } } var scanPreview = sp.ScanPreviews.FirstOrDefault(); if (scanPreview != null) { using (MemoryStream ms = new MemoryStream(scanPreview.ScanPreviewContent.ToArray())) { Image img = Image.FromStream(ms); img.RotateFlip(rft); using (MemoryStream oms = new MemoryStream()) { img.Save(oms, ImageFormat.Png); scanPreview.ScanPreviewContent = oms.ToArray(); } } } Context.SubmitChanges(); return(new EmptyResult()); }