public void UpdateImageContainer(string url) { var image = ImageProxyFile.Parse(url); if (image == null) { _imageContainer.Content = ""; } else { image.Width = 230; image.Height = 129; _imageContainer.Content = LINQPad.Util.Image(image.ToString()); } }
public static ImageProxyFile Parse(string url) { var image = new ImageProxyFile(); var match = Pattern.Match(url); if (!match.Success) { return(null); } image.Endpoint = match.Groups[EndpointIndex].Value; image.Hash = match.Groups[HashIndex].Value; var width = match.Groups[WidthIndex]; var height = match.Groups[HeightIndex]; var crop = match.Groups[CropIndex]; var color = match.Groups[ColorIndex]; var type = match.Groups[TypeIndex]; if (width.Success) { image.Width = Convert.ToInt32(width.Value, CultureInfo.InvariantCulture); } if (height.Success) { image.Height = Convert.ToInt32(height.Value, CultureInfo.InvariantCulture); } if (crop.Success) { var c = crop.Captures; for (int i = 0; i < c.Count; i++) { switch (c[i].Value) { case "face": { image.Crop |= ImageCrop.Face; break; } case "hint": { image.Crop |= ImageCrop.Hint; break; } default: throw new InvalidOperationException("unhandled crop parameter"); } } } if (color.Success) { image.Color = color.Value; } // required switch (type.Value) { case "jpg": { image.OutputType = ImageType.Jpg; break; } case "png": { image.OutputType = ImageType.Png; break; } case "webp": { image.OutputType = ImageType.Webp; break; } default: { throw new InvalidOperationException("unhandled type parameter"); } } return(image); }