/// <summary> /// Returns a Globally Recognised Avatar as an <img /> - 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); }
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); }
/// <summary> /// Returns a Globally Recognised Avatar as an <img /> - 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())); }
/// <summary> /// Returns a Globally Recognised Avatar as an <img /> - 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))); }
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 <img /> - 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)); }
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}")); }
/// <summary> /// Gets the default image. /// </summary> /// <returns>The default image.</returns> public Bitmap GetDefaultImage() { if (IsSimplePNG) { return(DefaultImage.ToBitmap()); } return(this[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(); } }
private void tsmiLoadImageFromClipboard_Click(object sender, EventArgs e) { Image img = Clipboard.GetImage(); if (img != null) { if (DefaultImage != null) { DefaultImage.Dispose(); } DefaultImage = img; UpdatePreview(); } }
// 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(); }
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(); }
/// <summary> /// Returns a Globally Recognised Avatar as an <img /> - 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 <img /> - 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 <img /> - 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); }
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); }
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(); } }
/// <summary> /// Returns a Globally Recognised Avatar as an <img /> - 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)); }
/// <summary> /// Returns a Globally Recognised Avatar as an <img /> - 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 <img /> - 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))); }
// 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()); }