Пример #1
0
        private object GetSupportImage(string name, string ratio)
        {
            Nancy.Response response = new Nancy.Response();
            if (string.IsNullOrEmpty(name))
            {
                return(APIStatus.notFound404());
            }

            ratio = ratio.Replace(',', '.');
            float.TryParse(ratio, System.Globalization.NumberStyles.AllowDecimalPoint,
                           System.Globalization.CultureInfo.CreateSpecificCulture("en-EN"), out float newratio);

            name = Path.GetFileNameWithoutExtension(name);
            System.Resources.ResourceManager man = Resources.ResourceManager;
            byte[] dta = (byte[])man.GetObject(name);
            if ((dta == null) || (dta.Length == 0))
            {
                return(APIStatus.notFound404());
            }
            MemoryStream ms = new MemoryStream(dta);

            ms.Seek(0, SeekOrigin.Begin);
            System.Drawing.Image im = System.Drawing.Image.FromStream(ms);

            response = Response.FromStream(ResizeToRatio(im, newratio), "image/png");
            return(response);
        }
Пример #2
0
        /// <summary>
        /// Return SupportImage (build-in server)
        /// </summary>
        /// <param name="name">image file name</param>
        /// <returns></returns>
        private object GetSupportImage(string name)
        {
            Nancy.Response response = new Nancy.Response();

            if (string.IsNullOrEmpty(name))
            {
                return(APIStatus.notFound404());
            }
            name = Path.GetFileNameWithoutExtension(name);
            System.Resources.ResourceManager man = Resources.ResourceManager;
            byte[] dta = (byte[])man.GetObject(name);
            if ((dta == null) || (dta.Length == 0))
            {
                return(APIStatus.notFound404());
            }
            MemoryStream ms = new MemoryStream(dta);

            ms.Seek(0, SeekOrigin.Begin);

            response = Response.FromStream(ms, "image/png");
            return(response);
        }
        public System.IO.Stream GetSupportImage(string name, float?ratio)
        {
            if (string.IsNullOrEmpty(name))
            {
                return(new MemoryStream());
            }

            name = Path.GetFileNameWithoutExtension(name);
            System.Resources.ResourceManager man = Resources.ResourceManager;
            byte[] dta = (byte[])man.GetObject(name);
            if ((dta == null) || (dta.Length == 0))
            {
                return(new MemoryStream());
            }

            //Little hack
            MemoryStream ms = new MemoryStream(dta);

            ms.Seek(0, SeekOrigin.Begin);
            if (!name.Contains("404") || (ratio == null || Math.Abs(ratio.Value) < 0.001D))
            {
                return(new StreamWithResponse(ms, "image/png"));
            }

            Image im = Image.FromStream(ms);
            float w  = im.Width;
            float h  = im.Height;
            float nw;
            float nh;

            if (w <= h)
            {
                nw = h * ratio.Value;
                if (nw < w)
                {
                    nw = w;
                    nh = w / ratio.Value;
                }
                else
                {
                    nh = h;
                }
            }
            else
            {
                nh = w / ratio.Value;
                if (nh < h)
                {
                    nh = h;
                    nw = w * ratio.Value;
                }
                else
                {
                    nw = w;
                }
            }
            nw = (float)Math.Round(nw);
            nh = (float)Math.Round(nh);
            Image im2 = new Bitmap((int)nw, (int)nh, PixelFormat.Format32bppArgb);

            using (Graphics g = Graphics.FromImage(im2))
            {
                g.InterpolationMode = nw >= im.Width
                    ? InterpolationMode.HighQualityBilinear
                    : InterpolationMode.HighQualityBicubic;
                g.PixelOffsetMode = PixelOffsetMode.HighQuality;
                g.SmoothingMode   = SmoothingMode.HighQuality;
                g.Clear(Color.Transparent);
                Rectangle src = new Rectangle(0, 0, im.Width, im.Height);
                Rectangle dst = new Rectangle((int)((nw - w) / 2), (int)((nh - h) / 2), im.Width, im.Height);
                g.DrawImage(im, dst, src, GraphicsUnit.Pixel);
            }
            MemoryStream ms2 = new MemoryStream();

            im2.Save(ms2, ImageFormat.Png);
            ms2.Seek(0, SeekOrigin.Begin);
            ms.Dispose();
            return(new StreamWithResponse(ms2, "image/png"));
        }