Пример #1
0
        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");
                    //}
                }
            }
        }
Пример #2
0
        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);
        }
Пример #3
0
        // 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);
        }
Пример #4
0
        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));
        }
Пример #5
0
        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);
        }
Пример #6
0
        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);
        }