コード例 #1
0
        public byte[] FetchResizedImage(ImageData.Image img, int w, int h)
        {
            var istream = new MemoryStream(img.Bits);
            var img1    = System.Drawing.Image.FromStream(istream);
            var ratio   = Math.Min(w / (double)img1.Width, h / (double)img1.Height);

            if (ratio >= 1) // image is smaller than requested
            {
                ratio = 1;  // same size
            }
            w = Convert.ToInt32(ratio * img1.Width);
            h = Convert.ToInt32(ratio * img1.Height);
            var img2    = new System.Drawing.Bitmap(img1, w, h);
            var ostream = new MemoryStream();

            img2.Save(ostream, ImageFormat.Jpeg);
            var Bits   = ostream.GetBuffer();
            var Length = Bits.Length;

            img1.Dispose();
            img2.Dispose();
            istream.Close();
            ostream.Close();
            return(Bits);
        }
コード例 #2
0
ファイル: ExcelPic.cs プロジェクト: sengithub/SenSourcecode
 public ImageData.Image GetImage()
 {
     ImageData.Image i = null;
     try { i = ImageData.DbUtil.Db.Images.SingleOrDefault(ii => ii.Id == ImageId); }
     catch { }
     return(i);
 }
コード例 #3
0
 public override void ExecuteResult(ControllerContext context)
 {
     context.HttpContext.Response.Clear();
     context.HttpContext.Response.Cache.SetExpires(DateTime.Now.AddYears(1));
     context.HttpContext.Response.Cache.SetCacheability(HttpCacheability.Public);
     if (id == -2)
     {
         context.HttpContext.Response.ContentType = "image/jpeg";
         context.HttpContext.Response.BinaryWrite(NoPic2());
     }
     else if (id == -1)
     {
         context.HttpContext.Response.ContentType = "image/jpeg";
         context.HttpContext.Response.BinaryWrite(NoPic1());
     }
     else if (id == -3)
     {
         context.HttpContext.Response.ContentType = "image/jpeg";
         context.HttpContext.Response.BinaryWrite(NoPic3());
     }
     else
     {
         ImageData.Image i = null;
         try { i = ImageData.DbUtil.Db.Images.SingleOrDefault(ii => ii.Id == id); } catch (Exception) { }
         if (i == null || i.Secure == true)
         {
             if (nodefault)
             {
                 return;
             }
             if (portrait)
             {
                 context.HttpContext.Response.ContentType = "image/jpeg";
                 context.HttpContext.Response.BinaryWrite(tiny ? NoPic1() : NoPic2());
             }
             else
             {
                 NoPic(context.HttpContext);
             }
         }
         else
         {
             if (w.HasValue && h.HasValue)
             {
                 context.HttpContext.Response.ContentType = "image/jpeg";
                 var ri = FetchResizedImage(i, w.Value, h.Value, mode);
                 context.HttpContext.Response.BinaryWrite(ri);
             }
             else
             {
                 context.HttpContext.Response.ContentType = i.Mimetype ?? "image/jpeg";
                 context.HttpContext.Response.BinaryWrite(i.Bits);
             }
         }
     }
 }
コード例 #4
0
        public ActionResult FetchImage(string data)
        {
            // Authenticate first
            if (!Auth())
            {
                return(BaseMessage.createErrorReturn("Authentication failed, please try again", BaseMessage.API_ERROR_INVALID_CREDENTIALS));
            }

            BaseMessage       dataIn = BaseMessage.createFromString(data);
            CheckInFetchImage cifi   = JsonConvert.DeserializeObject <CheckInFetchImage>(dataIn.data);

            BaseMessage br = new BaseMessage();

            if (cifi.id == 0)
            {
                return(br.setData("The ID for the person cannot be set to zero"));
            }

            br.data = "The picture was not found.";

            var person = DbUtil.Db.People.SingleOrDefault(pp => pp.PeopleId == cifi.id);

            if (person.PictureId != null)
            {
                ImageData.Image image = null;

                switch (cifi.size)
                {
                case 0:     // 50 x 50
                    image = ImageData.DbUtil.Db.Images.SingleOrDefault(i => i.Id == person.Picture.ThumbId);
                    break;

                case 1:     // 120 x 120
                    image = ImageData.DbUtil.Db.Images.SingleOrDefault(i => i.Id == person.Picture.SmallId);
                    break;

                case 2:     // 320 x 400
                    image = ImageData.DbUtil.Db.Images.SingleOrDefault(i => i.Id == person.Picture.MediumId);
                    break;

                case 3:     // 570 x 800
                    image = ImageData.DbUtil.Db.Images.SingleOrDefault(i => i.Id == person.Picture.LargeId);
                    break;
                }

                if (image != null)
                {
                    br.data  = Convert.ToBase64String(image.Bits);
                    br.count = 1;
                    br.setNoError();
                }
            }

            return(br);
        }
コード例 #5
0
ファイル: PictureResult.cs プロジェクト: lightyeare/bvcms
        private void WriteDbImage(ControllerContext context)
        {
            ImageData.Image image = null;
            try
            {
                if (GrantPermission(id))
                {
                    using (var db = ImageData.CMSImageDataContext.Create(context.HttpContext))
                    {
                        image = db.Images.SingleOrDefault(ii => ii.Id == id);
                    }
                }
                else
                {
                    (new HttpUnauthorizedResult()).ExecuteResult(context);
                    return;
                }
            }
            catch { }

            if (image.IsNull() || (shouldBePublic && image?.IsPublic == false))
            {
                WritePng(context, NoPic());
            }
            else if (image?.Secure == true)
            {
                if (nodefault)
                {
                    return;
                }

                if (portrait)
                {
                    WriteJpeg(context, tiny ? NoPic1() : NoPic2());
                }
                else
                {
                    WritePng(context, NoPic());
                }
            }
            else
            {
                if (w.HasValue && h.HasValue)
                {
                    var ri = FetchResizedImage(image, w.Value, h.Value, mode);
                    WriteJpeg(context, ri);
                }
                else
                {
                    WriteImage(context, image.Mimetype ?? "image/jpeg", image.Bits);
                }
            }
        }
コード例 #6
0
        private void loadPicture()
        {
            CmsData.Family family = CmsData.DbUtil.Db.Families.SingleOrDefault(f => f.FamilyId == id);

            if (family == null || family.Picture == null)
            {
                return;
            }

            ImageData.Image image = ImageData.DbUtil.Db.Images.SingleOrDefault(i => i.Id == family.Picture.SmallId);

            if (image != null)
            {
                picture = Convert.ToBase64String(image.Bits);
            }
        }
コード例 #7
0
        private void loadPicture()
        {
            CmsData.Person person = CmsData.DbUtil.Db.People.SingleOrDefault(p => p.PeopleId == id);

            if (person == null || person.Picture == null)
            {
                return;
            }

            ImageData.Image image = ImageData.DbUtil.Db.Images.SingleOrDefault(i => i.Id == person.Picture.SmallId);

            if (image != null)
            {
                picture = Convert.ToBase64String(image.Bits);
            }
        }
コード例 #8
0
        public FileResult DocumentDownload(int documentId)
        {
            var document = CurrentDatabase.OrgMemberDocuments.SingleOrDefault(o => o.DocumentId == documentId);

            ImageData.Image i         = CurrentImageDatabase.Images.SingleOrDefault(im => im.Id == document.ImageId);
            var             shortType = i.Mimetype;

            i.Mimetype = MimeTypes.MimeTypeFromShortType(shortType);

            var cd = new System.Net.Mime.ContentDisposition
            {
                FileName = $"{document.DocumentName}{shortType}",
                Inline   = false,
            };

            Response.AppendHeader("Content-Disposition", cd.ToString());

            return(File(i.Bits, i.Mimetype));
        }
コード例 #9
0
        public override void ExecuteResult(ControllerContext context)
        {
            context.HttpContext.Response.Clear();
            context.HttpContext.Response.Cache.SetExpires(DateTime.Now.AddMinutes(10));
            context.HttpContext.Response.Cache.SetCacheability(HttpCacheability.Public);

            if (id == -2)
            {
                context.HttpContext.Response.ContentType = "image/png";
                context.HttpContext.Response.BinaryWrite(NoPic2());
            }
            else if (id == -1)
            {
                context.HttpContext.Response.ContentType = "image/jpeg";
                context.HttpContext.Response.BinaryWrite(NoPic1());
            }
            else if (id == -3)
            {
                context.HttpContext.Response.ContentType = "image/jpeg";
                context.HttpContext.Response.BinaryWrite(NoPic3());
            }
            else if (id == -4)
            {
                context.HttpContext.Response.ContentType = "image/jpeg";
                context.HttpContext.Response.BinaryWrite(NoMalePic());
            }
            else if (id == -5)
            {
                context.HttpContext.Response.ContentType = "image/jpeg";
                context.HttpContext.Response.BinaryWrite(NoFemalePic());
            }
            else if (id == -6)
            {
                context.HttpContext.Response.ContentType = "image/png";
                context.HttpContext.Response.BinaryWrite(NoPic2Sm());
            }
            else if (id == -7)
            {
                context.HttpContext.Response.ContentType = "image/jpeg";
                context.HttpContext.Response.BinaryWrite(NoMalePicSm());
            }
            else if (id == -8)
            {
                context.HttpContext.Response.ContentType = "image/jpeg";
                context.HttpContext.Response.BinaryWrite(NoFemalePicSm());
            }
            else
            {
                ImageData.Image i = null;

                var idb = DbUtil.CheckImageDatabaseExists(Util.CmsHost.Replace("CMS_", "CMSi_"));
                if (idb == DbUtil.CheckDatabaseResult.DatabaseExists)
                {
                    try
                    {
                        i = ImageData.DbUtil.Db.Images.SingleOrDefault(ii => ii.Id == id);
                    }
                    // ReSharper disable once EmptyGeneralCatchClause
                    catch (Exception)
                    {
                    }
                }

                if (i == null || i.Secure == true)
                {
                    if (nodefault)
                    {
                        return;
                    }

                    if (portrait)
                    {
                        context.HttpContext.Response.ContentType = "image/jpeg";
                        context.HttpContext.Response.BinaryWrite(tiny ? NoPic1() : NoPic2());
                    }
                    else
                    {
                        context.HttpContext.Response.ContentType = "image/png";
                    }

                    context.HttpContext.Response.BinaryWrite(NoPic());
                }
                else
                {
                    if (w.HasValue && h.HasValue)
                    {
                        context.HttpContext.Response.ContentType = "image/jpeg";
                        var ri = FetchResizedImage(i, w.Value, h.Value, mode);
                        context.HttpContext.Response.BinaryWrite(ri);
                    }
                    else
                    {
                        context.HttpContext.Response.ContentType = i.Mimetype ?? "image/jpeg";
                        context.HttpContext.Response.BinaryWrite(i.Bits);
                    }
                }
            }
        }
コード例 #10
0
 public byte[] FetchResizedImage(ImageData.Image img, int w, int h, string mode = "max")
 {
     return(ImageData.Image.ResizeFromBits(img.Bits, w, h, mode));
 }
コード例 #11
0
ファイル: PictureResult.cs プロジェクト: rastographics/bvcms
        private void WriteDbImage(ControllerContext context)
        {
#if DEBUG
            // speed up local development when no CMSi_ database exists
            // the try catch takes too long and the DatabaseExists function runs quickly
            using (var db = CMSDataContext.Create(context.HttpContext))
                if (!DbUtil.DatabaseExists("CMSi_" + db.Host))
                {
                    return;
                }
#endif
            ImageData.Image image = null;
            try
            {
                if (GrantPermission(id))
                {
                    using (var db = ImageData.CMSImageDataContext.Create(context.HttpContext))
                    {
                        image = db.Images.SingleOrDefault(ii => ii.Id == id);
                    }
                }
                else
                {
                    (new HttpUnauthorizedResult()).ExecuteResult(context);
                    return;
                }
            }
            catch { }

            if (image.IsNull() || (shouldBePublic && image?.IsPublic == false))
            {
                WritePng(context, NoPic());
            }
            else if (image?.Secure == true)
            {
                if (nodefault)
                {
                    return;
                }

                if (portrait)
                {
                    WriteJpeg(context, tiny ? NoPic1() : NoPic2());
                }
                else
                {
                    WritePng(context, NoPic());
                }
            }
            else
            {
                if (w.HasValue && h.HasValue)
                {
                    var ri = FetchResizedImage(image, w.Value, h.Value, mode);
                    WriteJpeg(context, ri);
                }
                else
                {
                    WriteImage(context, image.Mimetype ?? "image/jpeg", image.Bits);
                }
            }
        }
コード例 #12
0
        public ActionResult FetchImage(string data)
        {
            // Authenticate first
            var authError = Authenticate();

            if (authError != null)
            {
                return(authError);
            }

            // Check to see if type matches
            BaseMessage dataIn = BaseMessage.createFromString(data);

            if (dataIn.type != BaseMessage.API_TYPE_PERSON_IMAGE_REFRESH)
            {
                return(BaseMessage.createTypeErrorReturn());
            }

            // Everything is in order, start the return
            MobilePostFetchImage mpfi = JsonConvert.DeserializeObject <MobilePostFetchImage>(dataIn.data);

            BaseMessage br = new BaseMessage();

            if (mpfi.id == 0)
            {
                return(br.setData("The ID for the person cannot be set to zero"));
            }

            br.data = "The picture was not found.";
            br.type = BaseMessage.API_TYPE_PERSON_IMAGE_REFRESH;

            var person = DbUtil.Db.People.SingleOrDefault(pp => pp.PeopleId == mpfi.id);

            if (person.PictureId != null)
            {
                ImageData.Image image = null;

                switch (mpfi.size)
                {
                case 0:                         // 50 x 50
                    image = ImageData.DbUtil.Db.Images.SingleOrDefault(i => i.Id == person.Picture.ThumbId);
                    break;

                case 1:                         // 120 x 120
                    image = ImageData.DbUtil.Db.Images.SingleOrDefault(i => i.Id == person.Picture.SmallId);
                    break;

                case 2:                         // 320 x 400
                    image = ImageData.DbUtil.Db.Images.SingleOrDefault(i => i.Id == person.Picture.MediumId);
                    break;

                case 3:                         // 570 x 800
                    image = ImageData.DbUtil.Db.Images.SingleOrDefault(i => i.Id == person.Picture.LargeId);
                    break;
                }

                if (image != null)
                {
                    br.data  = Convert.ToBase64String(image.Bits);
                    br.count = 1;
                    br.error = 0;
                }
            }

            return(br);
        }