public void AddPictureWaterMark() { string webRootPath = hostingEnvironment.WebRootPath; var baseImage = Path.Combine(webRootPath, "ticket/ticketprototype.png"); for (int i = 0; i < 5; i++) { QRCodeGenerator qrGenerator = new QRCodeGenerator(); QRCodeData qrCodeData = qrGenerator.CreateQrCode("nguye van ana hoan" + i, QRCodeGenerator.ECCLevel.Q); QRCode qrCode = new QRCode(qrCodeData); var qrCodeImage = qrCode.GetGraphic(20, Color.Black, Color.White, iconBorderWidth: 0, iconSizePercent: 100, drawQuietZones: false).ImageToByte(); var outputPath = Path.Combine(webRootPath, $"ticket/output/ticket_{i}.png"); SixLabors.Fonts.Font font = SixLabors.Fonts.SystemFonts.CreateFont("Arial", 12); // for scaling water mark size is largly ignored. using (var img = SixLabors.ImageSharp.Image.Load(baseImage)) { using (var img2 = img.Clone(ctx => ctx.ApplyScalingLogoWaterMark(qrCodeImage))) { img2.Save(outputPath); } //using (var img2 = img.Clone(ctx => ctx.ApplyScalingWaterMark(font, "A short piece of text", Rgba32.HotPink, 5, false))) //{ // img2.Save("output/simple.png"); //} } } }
protected override IMAGE32 Evaluate() { if (FontFamily == null) { return(null); } if (Size <= 0) { return(null); } var font = new SixLabors.Fonts.Font(FontFamily, Size); var context = new SixLabors.Fonts.RendererOptions(font); var characters = "0123456789ABCDEFGHIJKLM"; var padding = new Size(this.Padding, this.Padding); var cellSize = context.GetGlypthMaxBounds(characters.ToCharArray()).OuterRound().Size; cellSize += padding * 2; var image = ImageFactory.CreateImage <Rgba32>(cellSize * 16); foreach (var c in characters.ToArray()) { _DrawGlyph(image, cellSize, padding, context, c); } return(image); }
// https://docs.microsoft.com/es-es/typography/opentype/spec/ttch01 public static void TestGlyph() { var family = SixLabors.Fonts.SystemFonts.Find("arial"); var font = new SixLabors.Fonts.Font(family, 50); var roptions = new SixLabors.Fonts.RendererOptions(font, 96); var size1 = SixLabors.Fonts.TextMeasurer.Measure("f", roptions); var size2 = SixLabors.Fonts.TextMeasurer.Measure("g", roptions); }
public SizeF MeasureString(String text, Font font, int width, StringFormat format) { SixLabors.Fonts.FontFamily family = SixLabors.Fonts.SystemFonts.Find(font.Name); //font.Bold //font.Italic //font.Underline //font.Strikeout SixLabors.Fonts.Font fo = new SixLabors.Fonts.Font(family, font.Size); SixLabors.Fonts.RendererOptions ro = new SixLabors.Fonts.RendererOptions(fo); SixLabors.Primitives.SizeF result = SixLabors.Fonts.TextMeasurer.Measure(text, ro); return(new System.Drawing.SizeF(result.Width, result.Height)); }
public static Image <Rgba32> CreateGlyphImage(this SixLabors.Fonts.Font font, Char character, Rgba32 foreground) { var options = TextGraphicsOptions.Default; var text = character.ToString(); var roptions = new SixLabors.Fonts.RendererOptions(font, 96); var size = SixLabors.Fonts.TextMeasurer.Measure(text, roptions); int w = (int)Math.Ceiling(size.Width); int h = (int)Math.Ceiling(size.Height); var img = new Image <Rgba32>(w, h); img.Mutate(dc => dc.DrawText(options, text, font, foreground, System.Numerics.Vector2.Zero)); return(img); }
public static IMAGE32 RenderText(this SixLabors.Fonts.FontFamily ffamily, string text, float fsize, float padding, COLOR color, TextGraphicsOptions options) { // http://sixlabors.com/2017/04/08/watermarks/ if (string.IsNullOrEmpty(text)) { return(null); } var font = new SixLabors.Fonts.Font(ffamily, fsize); var roptions = new SixLabors.Fonts.RendererOptions(font, 96); var size = SixLabors.Fonts.TextMeasurer.Measure(text, roptions); var w = (int)Math.Ceiling(size.Width + padding * 2); var h = (int)Math.Ceiling(size.Height + padding * 2); var img = new IMAGE32(w, h); img.Mutate(dc => dc.DrawText(options, text, font, color, new System.Numerics.Vector2(padding, padding))); return(img); }