Esempio n. 1
0
        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());
                }
            }
        }
Esempio n. 2
0
        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());
        }