Exemplo n.º 1
0
        /// <summary>
        /// Returns a Globally Recognised Avatar as an &lt;img /&gt; - http://gravatar.com
        /// </summary>
        /// <param name="htmlHelper"></param>
        /// <param name="emailAddress">Email Address for the Gravatar</param>
        /// <param name="defaultImage">Default image if user hasn't created a Gravatar</param>
        /// <param name="size">Size in pixels (default: 80)</param>
        /// <param name="defaultImageUrl">URL to a custom default image (e.g: 'Url.Content("~/images/no-grvatar.png")' )</param>
        /// <param name="forceDefaultImage">Prefer the default image over the users own Gravatar</param>
        /// <param name="rating">Gravatar content rating (note that Gravatars are self-rated)</param>
        /// <param name="forceSecureRequest">Always do secure (https) requests</param>
        /// <param name="cssClass"></param>
        /// <param name="alt"></param>
        public static IHtmlContent GravatarImage(
            this IHtmlHelper htmlHelper,
            string emailAddress,
            int size = 80,
            DefaultImage defaultImage = DefaultImage.Default,
            string defaultImageUrl    = "",
            bool forceDefaultImage    = false,
            Rating rating             = Rating.G,
            bool forceSecureRequest   = false,
            string cssClass           = "gravatar",
            string alt = "Gravatar image")
        {
            var imgTag = new TagBuilder("img");

            emailAddress = string.IsNullOrEmpty(emailAddress) ? string.Empty : emailAddress.Trim().ToLower();

            imgTag.Attributes.Add("src",
                                  string.Format("{0}://{1}.gravatar.com/avatar/{2}?s={3}{4}{5}{6}",
                                                htmlHelper.ViewContext.HttpContext.Request.IsHttps || forceSecureRequest ? "https" : "http",
                                                htmlHelper.ViewContext.HttpContext.Request.IsHttps || forceSecureRequest ? "secure" : "www",
                                                GetMd5Hash(emailAddress),
                                                size.ToString(),
                                                "&d=" + (!string.IsNullOrEmpty(defaultImageUrl) ? htmlHelper.UrlEncoder.Encode(defaultImageUrl) : defaultImage.GetDescription()),
                                                forceDefaultImage ? "&f=y" : "",
                                                "&r=" + rating.GetDescription()
                                                )
                                  );

            imgTag.Attributes.Add("class", cssClass);
            imgTag.Attributes.Add("alt", alt);
            imgTag.TagRenderMode = TagRenderMode.SelfClosing;

            return(imgTag);
        }
Exemplo n.º 2
0
        static void LoadImageFromEmbeddedResource(string imageName, DefaultImage defaultImage)
        {
            var fileStream = Assembly.GetExecutingAssembly().GetManifestResourceStream($"GameLibrary.Content.{ imageName }");
            var image      = (Bitmap)Image.FromStream(fileStream);

            ImageCache.AddOrUpdate(defaultImage.ToString(), image, (key, oldImage) => image);
        }
Exemplo n.º 3
0
        /// <summary>
        /// Returns a Globally Recognised Avatar as an &lt;img /&gt; - http://gravatar.com
        /// </summary>
        /// <param name="emailAddress">Email Address for the Gravatar</param>
        /// <param name="defaultImage">Default image if user hasn't created a Gravatar</param>
        /// <param name="size">Size in pixels (default: 80)</param>
        /// <param name="defaultImageUrl">URL to a custom default image (e.g: 'Url.Content("~/images/no-grvatar.png")' )</param>
        /// <param name="forceDefaultImage">Prefer the default image over the users own Gravatar</param>
        /// <param name="rating">Gravatar content rating (note that Gravatars are self-rated)</param>
        /// <param name="forceSecureRequest">Always do secure (https) requests</param>
        public static HtmlString GravatarImage(
            this HtmlHelper htmlHelper,
            string emailAddress,
            int size = 80,
            DefaultImage defaultImage = DefaultImage.Default,
            string defaultImageUrl    = "",
            bool forceDefaultImage    = false,
            Rating rating             = Rating.G,
            bool forceSecureRequest   = false)
        {
            var imgTag = new TagBuilder("img");

            emailAddress = string.IsNullOrEmpty(emailAddress) ? string.Empty : emailAddress.Trim().ToLower();

            imgTag.Attributes.Add("src",
                                  string.Format("https://secure.gravatar.com/avatar/{0}?s={1}{2}{3}{4}",
                                                GetMd5Hash(emailAddress),
                                                size.ToString(),
                                                "&d=" +
                                                (!string.IsNullOrEmpty(defaultImageUrl)
                                                                     ? HttpUtility.UrlEncode(defaultImageUrl)
                                                                     : defaultImage.GetDescription()),
                                                forceDefaultImage ? "&f=y" : "",
                                                "&r=" + rating.GetDescription()
                                                )
                                  );

            imgTag.Attributes.Add("class", "gravatar");
            imgTag.Attributes.Add("alt", "Gravatar image");
            return(new HtmlString(imgTag.ToString()));
        }
Exemplo n.º 4
0
        /// <summary>
        ///     Returns a Globally Recognised Avatar as an &lt;img /&gt; - http://gravatar.com
        /// </summary>
        /// <param name="htmlHelper">The HTML Helper object</param>
        /// <param name="emailAddress">Email Address for the Gravatar</param>
        /// <param name="defaultImage">Default image if user hasn't created a Gravatar</param>
        /// <param name="size">Size in pixels (default: 80)</param>
        /// <param name="defaultImageUrl">URL to a custom default image (e.g: 'Url.Content("~/images/no-grvatar.png")' )</param>
        /// <param name="forceDefaultImage">Prefer the default image over the users own Gravatar</param>
        /// <param name="rating">Gravatar content rating (note that Gravatars are self-rated)</param>
        /// <param name="forceSecureRequest">Always do secure (https) requests</param>
        public static HtmlString GravatarImage(
            this HtmlHelper htmlHelper,
            string emailAddress,
            int size = 80,
            DefaultImage defaultImage = DefaultImage.Default,
            string defaultImageUrl    = "",
            bool forceDefaultImage    = false,
            Rating rating             = Rating.G,
            bool forceSecureRequest   = false)
        {
            var imgTag = new TagBuilder("img");

            emailAddress = string.IsNullOrEmpty(emailAddress) ? string.Empty : emailAddress.Trim().ToLower();

            imgTag.Attributes.Add("src",
                                  string.Format("{0}://{1}.gravatar.com/avatar/{2}?s={3}{4}{5}{6}",
                                                htmlHelper.ViewContext.HttpContext.Request.IsSecureConnection || forceSecureRequest ? "https" : "http",
                                                htmlHelper.ViewContext.HttpContext.Request.IsSecureConnection || forceSecureRequest ? "secure" : "www",
                                                GetMd5Hash(emailAddress),
                                                size,
                                                "&d=" +
                                                (!string.IsNullOrEmpty(defaultImageUrl)
                        ? HttpUtility.UrlEncode(defaultImageUrl)
                        : defaultImage.GetDescription()),
                                                forceDefaultImage ? "&f=y" : "",
                                                "&r=" + rating.GetDescription()
                                                )
                                  );

            imgTag.Attributes.Add("class", "img img-responsive img-circle gravatar");
            imgTag.Attributes.Add("alt", "Change your profile image at http://gravatar.com");
            return(new HtmlString(imgTag.ToString(TagRenderMode.SelfClosing)));
        }
Exemplo n.º 5
0
        private void pbResult_DragDrop(object sender, DragEventArgs e)
        {
            if (e.Data.GetDataPresent(DataFormats.FileDrop, false))
            {
                string[] files = e.Data.GetData(DataFormats.FileDrop, false) as string[];

                if (files != null && files.Length > 0)
                {
                    if (Helpers.IsImageFile(files[0]))
                    {
                        if (DefaultImage != null)
                        {
                            DefaultImage.Dispose();
                        }
                        DefaultImage = ImageHelpers.LoadImage(files[0]);
                        UpdatePreview();
                    }
                }
            }
            else if (e.Data.GetDataPresent(DataFormats.Bitmap, false))
            {
                Image img = e.Data.GetData(DataFormats.Bitmap, false) as Image;

                if (img != null)
                {
                    if (DefaultImage != null)
                    {
                        DefaultImage.Dispose();
                    }
                    DefaultImage = img;
                    UpdatePreview();
                }
            }
        }
    /// <summary>
    /// Returns a Globally Recognised Avatar as an &lt;img /&gt; - http://gravatar.com
    /// </summary>
    /// <param name="emailAddress">Email Address for the Gravatar</param>
	/// <param name="defaultImage">Default image if user hasn't created a Gravatar</param>
    /// <param name="size">Size in pixels (default: 80)</param>
    /// <param name="defaultImageUrl">URL to a custom default image (e.g: 'Url.Content("~/images/no-grvatar.png")' )</param>
    /// <param name="forceDefaultImage">Prefer the default image over the users own Gravatar</param>
    /// <param name="rating">Gravatar content rating (note that Gravatars are self-rated)</param>
    /// <param name="forceSecureRequest">Always do secure (https) requests</param>
    public static HtmlString GravatarImage(
      this HtmlHelper htmlHelper,
      string emailAddress,
	  int size = 80,
      DefaultImage defaultImage = DefaultImage.Default,
      string defaultImageUrl = "",
      bool forceDefaultImage = false,
      Rating rating = Rating.G,
      bool forceSecureRequest = false) {

        var imgTag = new TagBuilder("img");

        emailAddress = string.IsNullOrEmpty(emailAddress) ? string.Empty : emailAddress.Trim().ToLower();

        imgTag.Attributes.Add("src",
            string.Format("{0}://{1}.gravatar.com/avatar/{2}?s={3}{4}{5}{6}",
                htmlHelper.ViewContext.HttpContext.Request.IsSecureConnection || forceSecureRequest ? "https" : "http",
                htmlHelper.ViewContext.HttpContext.Request.IsSecureConnection || forceSecureRequest ? "secure" : "www",
                GetMd5Hash(emailAddress),
                size.ToString(),
                "&d=" + (!string.IsNullOrEmpty(defaultImageUrl) ? HttpUtility.UrlEncode(defaultImageUrl) : defaultImage.GetDescription()),
                forceDefaultImage ? "&f=y" : "",
                "&r=" + rating.GetDescription()
                )
            );

        imgTag.Attributes.Add("class", "gravatar");
        imgTag.Attributes.Add("alt", "Gravatar image");
        return new HtmlString(imgTag.ToString(TagRenderMode.SelfClosing));
    }
Exemplo n.º 7
0
        public static Uri GetUri(string emailAddress, int size = 80, DefaultImage defaultImage = DefaultImage.Default,
                                 string defaultImageUrl        = "", Rating rating = Rating.PG)
        {
            emailAddress    = string.IsNullOrEmpty(emailAddress) ? string.Empty : emailAddress.Trim().ToLower();
            defaultImageUrl = (!string.IsNullOrEmpty(defaultImageUrl) ? WebUtility.UrlEncode(defaultImageUrl) : defaultImage.GetDescription());

            return(new Uri($"https://secure.gravatar.com/avatar/{GetMd5Hash(emailAddress)}?s={size}&r={rating.GetDescription()}&d={defaultImageUrl}"));
        }
Exemplo n.º 8
0
        /// <summary>
        /// Gets the default image.
        /// </summary>
        /// <returns>The default image.</returns>
        public Bitmap GetDefaultImage()
        {
            if (IsSimplePNG)
            {
                return(DefaultImage.ToBitmap());
            }

            return(this[0]);
        }
Exemplo n.º 9
0
        private void tsmiLoadImageFromFile_Click(object sender, EventArgs e)
        {
            string filePath = ImageHelpers.OpenImageFileDialog();

            if (!string.IsNullOrEmpty(filePath))
            {
                if (DefaultImage != null)
                {
                    DefaultImage.Dispose();
                }
                DefaultImage = ImageHelpers.LoadImage(filePath);
                UpdatePreview();
            }
        }
Exemplo n.º 10
0
        private void tsmiLoadImageFromClipboard_Click(object sender, EventArgs e)
        {
            Image img = Clipboard.GetImage();

            if (img != null)
            {
                if (DefaultImage != null)
                {
                    DefaultImage.Dispose();
                }
                DefaultImage = img;
                UpdatePreview();
            }
        }
Exemplo n.º 11
0
        // http://stackoverflow.com/q/424366
        /// <summary>
        /// Gets the link to avatar by gravatar.
        /// </summary>
        /// <param name="content">The content (email).</param>
        /// <param name="size">The size of avatar.</param>
        /// <param name="ratingType">Type of the rating.</param>
        /// <param name="defaultImage">The type of default image.</param>
        /// <returns></returns>
        /// <exception cref="System.ArgumentNullException">content</exception>
        /// <exception cref="System.ArgumentOutOfRangeException">size;The image size should be between 1 and 2048</exception>
        public static string Get(string content, int size = 80, RatingType ratingType = RatingType.PG, DefaultImage defaultImage = DefaultImage.MM)
        {
            if (content == null) throw new ArgumentNullException("content");

            if (size < 1 | size > 2048)
                throw new ArgumentOutOfRangeException("size",
                    "The image size should be between 1 and 2048");

            return String.Format("{0}?gravatar_id={1}&s={2}&r={3}&d={4}",
                Url,
                MD5.GetHashString(content.ToLower()),
                size,
                ratingType.ToString("G"),
                defaultImage.ToString("G")).ToLower();
        }
Exemplo n.º 12
0
        static void Main(string[] args)
        {
            ScreenBase   retina  = new RetinaScreen();
            IScreenImage image   = new DefaultImage("a shiny unicorn!", QualityRates.High);
            Screen       screen  = new MultiTouchScreen(100, 10, 999999, "1024x720", retina, 5);
            Battery      battery = new Battery(BatteryTypes.NickelCadmium, 4100, true);
            Microphone   mic     = new Microphone();

            Mobile mob = new Mobile(screen, battery, mic);

            Console.WriteLine(mob.MobScreen);
            mob.MobScreen.Dysplay.Show(image);
            mob.MobScreen.Touch();

            Console.WriteLine(mob.MobBattery);

            mob.MobMicro.IsMuted     = true;
            mob.MobMicro.Sensetivity = 8;
            mob.MobMicro.Sensetivity = 200;
            mob.MobMicro.Sensetivity = 0;

            Console.ReadLine();
        }
Exemplo n.º 13
0
 /// <summary>
 /// Returns a Globally Recognised Avatar as an &lt;img /&gt; - http://gravatar.com
 /// </summary>
 /// <param name="emailAddress">Email Address for the Gravatar</param>
 /// <param name="size">Size in pixels (default: 80)</param>
 /// <param name="defaultImage">Default image if user hasn't created a Gravatar</param>
 /// <param name="forceDefaultImage">Prefer the default image over the users own Gravatar</param>
 /// <param name="rating">Gravatar content rating (note that Gravatars are self-rated)</param>
 /// <param name="forceSecureRequest">Always do secure (https) requests</param>
 public static HtmlString GravatarImage(this HtmlHelper htmlHelper, string emailAddress, int size, DefaultImage defaultImage, bool forceDefaultImage, Rating rating, bool forceSecureRequest)
 {
     return(GravatarImage(htmlHelper, emailAddress, size, defaultImage, string.Empty, forceDefaultImage, rating, forceSecureRequest));
 }
 /// <summary>
 /// Returns a Globally Recognised Avatar as an &lt;img /&gt; - http://gravatar.com
 /// </summary>
 /// <param name="emailAddress">Email Address for the Gravatar</param>
 /// <param name="size">Size in pixels (default: 80)</param>
 /// <param name="defaultImage">Default image if user hasn't created a Gravatar</param>
 public static HtmlString GravatarImage(this HtmlHelper htmlHelper, string emailAddress, int size, DefaultImage defaultImage) {
     return GravatarImage(htmlHelper, emailAddress, size, defaultImage, string.Empty, false, Rating.G, false);
 }
 /// <summary>
 /// Returns a Globally Recognised Avatar as an &lt;img /&gt; - http://gravatar.com
 /// </summary>
 /// <param name="emailAddress">Email Address for the Gravatar</param>
 /// <param name="size">Size in pixels (default: 80)</param>
 /// <param name="defaultImage">Default image if user hasn't created a Gravatar</param>
 /// <param name="forceDefaultImage">Prefer the default image over the users own Gravatar</param>
 /// <param name="rating">Gravatar content rating (note that Gravatars are self-rated)</param>
 /// <param name="forceSecureRequest">Always do secure (https) requests</param>
 public static HtmlString GravatarImage(this HtmlHelper htmlHelper, string emailAddress, int size, DefaultImage defaultImage, bool forceDefaultImage, Rating rating, bool forceSecureRequest) {
     return GravatarImage(htmlHelper, emailAddress, size, defaultImage, string.Empty, forceDefaultImage, rating, forceSecureRequest);
 }
Exemplo n.º 16
0
        public override void Process(TagHelperContext context, TagHelperOutput output)
        {
            output.TagName = "img";
            var email = string.IsNullOrWhiteSpace(EmailAddress) ? string.Empty : EmailAddress.ToLower();

            output.Attributes.Add("src",
                                  string.Format("{0}://{1}.gravatar.com/avatar/{2}?s={3}{4}{5}{6}",
                                                "https",
                                                "s",
                                                GravatarUtilities.GetMd5Hash(email),
                                                ImageSize,
                                                "&d=" + (!string.IsNullOrEmpty(DefaultImageUrl) ? HtmlEncoder.Default.Encode(DefaultImageUrl) : DefaultImage.GetDescription()),
                                                ForceDefaultImage ? "&f=y" : "",
                                                "&r=" + Rating.GetDescription()
                                                )
                                  );
            if (!string.IsNullOrWhiteSpace(AdditionalCssClasses))
            {
                if (output.Attributes.Any(x => x.Name.ToLower() == "class"))
                {
                    AdditionalCssClasses = output.Attributes.First(x => x.Name.ToLower() == "class").Value + " " + AdditionalCssClasses;
                    output.Attributes.Remove(output.Attributes.First(x => x.Name.ToLower() == "class"));
                }

                // Add the additional CSS classes
                output.Attributes.Add("class", AdditionalCssClasses);
            }
            base.Process(context, output);
        }
Exemplo n.º 17
0
        private ApngImage(byte[] fileBytes)
        {
            // first we try to identify the type of stream
            MemoryStream ms  = new MemoryStream(fileBytes);
            Bitmap       img = new Bitmap(ms);

            ms.Seek(0, SeekOrigin.Begin);

            // if GIF (animated or not )
            if (ImageFormat.Gif.Equals(img.RawFormat))
            {
                try
                {
                    NumFrames           = img.GetFrameCount(FrameDimension.Time);
                    IsSimplePng         = false;
                    DefaultImage._image = new Bitmap(img);
                    for (int i = 0; i < NumFrames; i++)
                    {
                        Frame  f     = new Frame();
                        byte[] times = img.GetPropertyItem(0x5100).Value;
                        int    dur   = BitConverter.ToInt32(times, 4 * i);
                        img.SelectActiveFrame(FrameDimension.Time, i);
                        f._image = img.Clone(new Rectangle(Point.Empty, img.Size), PixelFormat.Format32bppArgb);
                        f._delay = dur / 100.0;
                        _frames.Add(f);
                    }
                }
                catch
                {
                    IsSimplePng         = true;
                    DefaultImage._image = img;
                    DefaultImage._delay = 0;
                    NumFrames           = 0;
                    _frames.Insert(0, DefaultImage);
                }
                img.Dispose();
                return;
            }

            // if JPEG,... it is a static image
            if (!ImageFormat.Png.Equals(img.RawFormat))
            {
                IsSimplePng         = true;
                DefaultImage._image = img;
                DefaultImage._delay = 0;
                NumFrames           = 0;
                _frames.Insert(0, DefaultImage);
                return;
            }

            // Finally process APNG files

            // check file signature.
            if (!Helper.IsBytesEqual(ms.ReadBytes(Frame.Signature.Length), Frame.Signature))
            {
                throw new Exception("File signature incorrect.");
            }

            // Read IHDR chunk.
            IhdrChunk = new IhdrChunk(ms);
            if (IhdrChunk.ChunkType != "IHDR")
            {
                throw new Exception("IHDR chunk must located before any other chunks.");
            }

            Bitmap   canvas   = new Bitmap(IhdrChunk.Width, IhdrChunk.Height, PixelFormat.Format32bppArgb);
            Graphics graphics = Graphics.FromImage(canvas);

            // Now let's loop in chunks
            try
            {
                Chunk chunk;
                Frame frame               = null;
                var   otherChunks         = new List <OtherChunk>();
                var   isIdatAlreadyParsed = false;
                do
                {
                    if (ms.Position == ms.Length)
                    {
                        throw new Exception("IEND chunk expected.");
                    }

                    chunk = new Chunk(ms);

                    switch (chunk.ChunkType)
                    {
                    case "IHDR":
                        throw new Exception("Only single IHDR is allowed.");
                    // break;

                    // case "bKGD": is not processed

                    case "acTL":
                        if (IsSimplePng)
                        {
                            throw new Exception("acTL chunk must located before any IDAT and fdAT");
                        }

                        AcTlChunk = new AcTlChunk(chunk);
                        break;

                    case "IDAT":
                        // To be an ApngImage, acTL must located before any IDAT and fdAT.
                        if (AcTlChunk == null)
                        {
                            IsSimplePng = true;
                        }

                        // Only default image has IDAT.
                        DefaultImage.IhdrChunk = IhdrChunk;
                        DefaultImage.AddIdatChunk(new IdatChunk(chunk));
                        isIdatAlreadyParsed = true;

                        if (DefaultImage.FcTlChunk != null)
                        {
                            _frames.Insert(0, DefaultImage);
                            DefaultImageIsAnimated = true;
                            //graphics.DrawImage(Image.FromStream(DefaultImage.GetStream()), DefaultImage.FcTlChunk.XOffset, DefaultImage.FcTlChunk.YOffset);
                            //DefaultImage._image = (Bitmap)(canvas.Clone());
                        }
                        break;

                    case "fcTL":
                        // Simple PNG should ignore this.
                        if (IsSimplePng)
                        {
                            continue;
                        }

                        if (frame != null && frame.IdatChunks.Count == 0)
                        {
                            throw new Exception("One frame must have only one fcTL chunk.");
                        }

                        // IDAT already parsed means this fcTL is used by FRAME IMAGE.
                        if (isIdatAlreadyParsed)
                        {
                            // register current frame object and build a new frame object
                            // for next use
                            if (frame != null)
                            {
                                _frames.Add(frame);
                            }
                            frame = new Frame
                            {
                                IhdrChunk = IhdrChunk,
                                FcTlChunk = new FcTlChunk(chunk)
                            };
                        }
                        // Otherwise this fcTL is used by the DEFAULT IMAGE.
                        else
                        {
                            DefaultImage.FcTlChunk = new FcTlChunk(chunk);
                        }
                        break;

                    case "fdAT":
                        // Simple PNG should ignore this.
                        if (IsSimplePng)
                        {
                            continue;
                        }

                        // fdAT is only used by frame image.
                        if (frame == null || frame.FcTlChunk == null)
                        {
                            throw new Exception("fcTL chunk expected.");
                        }

                        frame.AddIdatChunk(new FdAtChunk(chunk).ToIdatChunk());
                        //graphics.DrawImage(Image.FromStream(frame.GetStream()), DefaultImage.FcTlChunk.XOffset, DefaultImage.FcTlChunk.YOffset);
                        //DefaultImage._image = (Bitmap)(canvas.Clone());
                        break;

                    case "IEND":
                        // register last frame object
                        if (frame != null)
                        {
                            _frames.Add(frame);
                        }

                        if (DefaultImage.IdatChunks.Count != 0)
                        {
                            DefaultImage.IendChunk = new IendChunk(chunk);
                        }
                        foreach (var f in _frames)
                        {
                            f.IendChunk = new IendChunk(chunk);
                        }
                        break;

                    default:
                        otherChunks.Add(new OtherChunk(chunk));
                        break;
                    }
                } while (chunk.ChunkType != "IEND");

                DefaultImage.GetImage(); // to force Default._image generation

                // Now we should apply every chunk in otherChunks to every frame.
                //_frames.ForEach(f => otherChunks.ForEach(f.AddOtherChunk));

                NumFrames = _frames.Count;
                for (int j = 0; j < NumFrames; j++)
                {
                    otherChunks.ForEach(_frames[j].AddOtherChunk);

                    if (_frames[j].FcTlChunk.BlendOp == BlendOps.ApngBlendOpSource)
                    {
                        graphics.CompositingMode = System.Drawing.Drawing2D.CompositingMode.SourceCopy;
                    }
                    else
                    {
                        graphics.CompositingMode = System.Drawing.Drawing2D.CompositingMode.SourceOver;
                    }

                    graphics.DrawImage(Image.FromStream(_frames[j].GetStream()), _frames[j].FcTlChunk.XOffset, _frames[j].FcTlChunk.YOffset);
                    _frames[j]._image = (Bitmap)(canvas.Clone());
                    if (_frames[j].FcTlChunk.DisposeOp == DisposeOps.ApngDisposeOpBackground)
                    {
                        graphics.Clear(Color.Transparent);
                    }
                    else if (_frames[j].FcTlChunk.DisposeOp == DisposeOps.ApngDisposeOpPrevious && j > 0)
                    {
                        graphics.CompositingMode = System.Drawing.Drawing2D.CompositingMode.SourceCopy;
                        graphics.DrawImage(_frames[j - 1]._image, Point.Empty);
                    }
                }
            }
            finally
            {
                canvas?.Dispose();
                graphics?.Dispose();
            }
        }
Exemplo n.º 18
0
    /// <summary>
    /// Returns a Globally Recognised Avatar as an &lt;img /&gt; - http://gravatar.com
    /// </summary>
    /// <param name="emailAddress">Email Address for the Gravatar</param>
    /// <param name="defaultImage">Default image if user hasn't created a Gravatar</param>
    /// <param name="size">Size in pixels (default: 80)</param>
    /// <param name="defaultImageUrl">URL to a custom default image (e.g: 'Url.Content("~/images/no-grvatar.png")' )</param>
    /// <param name="forceDefaultImage">Prefer the default image over the users own Gravatar</param>
    /// <param name="rating">Gravatar content rating (note that Gravatars are self-rated)</param>
    /// <param name="forceSecureRequest">Always do secure (https) requests</param>
    public static HtmlString GravatarImage(
      this HtmlHelper htmlHelper,
      string emailAddress,
      IDictionary<string, string> htmlAttributes = null,
      int size = 80,
      DefaultImage defaultImage = DefaultImage.Default,
      string defaultImageUrl = "",
      bool forceDefaultImage = false,
      Rating rating = Rating.G,
      bool forceSecureRequest = false)
    {
        var imgTag = new TagBuilder("img");

        emailAddress = string.IsNullOrEmpty(emailAddress) ? string.Empty : emailAddress.Trim().ToLower();
        if (HttpContext.Current.Request.Url.Host.ToLower().Equals("localhost"))
        {
            imgTag.Attributes.Add("src", (htmlHelper.ViewContext.HttpContext.Request.IsSecureConnection || forceSecureRequest ? "https://" : "http://") + defaultImageUrl);
            imgTag.Attributes.Add("width", size.ToString());
            imgTag.Attributes.Add("height", size.ToString());
        }
        else
        {
            imgTag.Attributes.Add("src",
                string.Format("{0}://{1}.gravatar.com/avatar/{2}?s={3}{4}{5}{6}",
                    htmlHelper.ViewContext.HttpContext.Request.IsSecureConnection || forceSecureRequest ? "https" : "http",
                    htmlHelper.ViewContext.HttpContext.Request.IsSecureConnection || forceSecureRequest ? "secure" : "www",
                    GetMd5Hash(emailAddress),
                    size.ToString(),
                    "&d=" + (!string.IsNullOrEmpty(defaultImageUrl) ? HttpUtility.UrlEncode(defaultImageUrl) : defaultImage.GetDescription()),
                    forceDefaultImage ? "&f=y" : "",
                    "&r=" + rating.GetDescription()
                    )
                );
        }
        imgTag.Attributes.Add("alt", "Gravatar image");
        if (htmlAttributes != null)
        {
            foreach (var attr in htmlAttributes)
            {
                if (imgTag.Attributes.Keys.Contains(attr.Key))
                    imgTag.Attributes[attr.Key] = attr.Value;
                else
                   imgTag.Attributes.Add(attr.Key, attr.Value);
            }
        }
        return new HtmlString(imgTag.ToString(TagRenderMode.SelfClosing));
    }
Exemplo n.º 19
0
 /// <summary>
 /// Returns a Globally Recognised Avatar as an &lt;img /&gt; - http://gravatar.com
 /// </summary>
 /// <param name="emailAddress">Email Address for the Gravatar</param>
 /// <param name="size">Size in pixels (default: 80)</param>
 /// <param name="defaultImage">Default image if user hasn't created a Gravatar</param>
 public static HtmlString GravatarImage(this HtmlHelper htmlHelper, string emailAddress, int size, DefaultImage defaultImage)
 {
     return(GravatarImage(htmlHelper, emailAddress, size, defaultImage, string.Empty, false, Rating.G, false));
 }
Exemplo n.º 20
0
    /// <summary>
    /// Returns a Globally Recognised Avatar as an &lt;img /&gt; - http://gravatar.com
    /// </summary>
    private static HtmlString GravatarImage(this HtmlHelper htmlHelper, string emailAddress, int size, DefaultImage defaultImage, string defaultImageUrl, bool forceDefaultImage, Rating rating, bool forceSecureRequest)
    {
        var imgTag = new TagBuilder("img");

        emailAddress = String.IsNullOrEmpty(emailAddress) ? String.Empty : emailAddress.Trim().ToLower();

        imgTag.Attributes.Add("src",
                              string.Format("{0}://{1}.gravatar.com/avatar/{2}?s={3}{4}{5}{6}",
                                            htmlHelper.ViewContext.HttpContext.Request.IsSecureConnection || forceSecureRequest ? "https" : "http",
                                            htmlHelper.ViewContext.HttpContext.Request.IsSecureConnection || forceSecureRequest ? "secure" : "www",
                                            GetMd5Hash(emailAddress),
                                            size.ToString(),
                                            "&d=" + (!string.IsNullOrEmpty(defaultImageUrl) ? HttpUtility.UrlEncode(defaultImageUrl) : defaultImage.GetDescription()),
                                            forceDefaultImage ? "&f=y" : "",
                                            "&r=" + rating.GetDescription()
                                            )
                              );

        imgTag.Attributes.Add("class", "gravatar");
        imgTag.Attributes.Add("alt", "Gravatar image");
        return(new HtmlString(imgTag.ToString(TagRenderMode.SelfClosing)));
    }
Exemplo n.º 21
0
        // http://stackoverflow.com/q/424366
        /// <summary>
        /// Gets the link to avatar by Gravatar.
        /// </summary>
        /// <param name="content">The content (email).</param>
        /// <param name="size">The size of avatar.</param>
        /// <param name="ratingType">Type of the rating.</param>
        /// <param name="defaultImage">The type of default image.</param>
        /// <returns></returns>
        /// <exception cref="System.ArgumentNullException">content</exception>
        /// <exception cref="System.ArgumentOutOfRangeException">size;The image size should be between 1 and 2048</exception>
        public static string Get(string content, int size = 80, RatingType ratingType = RatingType.PG, DefaultImage defaultImage = DefaultImage.MM)
        {
            if (content == null)
            {
                throw new ArgumentNullException("content");
            }

            if (size < 1 | size > 2048)
            {
                throw new ArgumentOutOfRangeException("size",
                                                      "The image size should be between 1 and 2048");
            }

            return(String.Format("{0}?gravatar_id={1}&s={2}&r={3}&d={4}",
                                 Url,
                                 MD5.GetHashString(content.ToLower()),
                                 size,
                                 ratingType.ToString("G"),
                                 defaultImage.ToString("G")).ToLower());
        }