public async Task <byte[]> ProcessImage(ImageMeme meme, params string[] replacements) { var imagebytes = await(await imageStore.GetImageAsync(meme.Template.ImageBaseIdentifier)).GetBytes(); using var image = Image.Load(imagebytes); foreach (var text in meme.Template.memeText) { // The options are optional TextOptions options = new TextOptions() { ApplyKerning = true, TabWidth = 8, // a tab renders as 8 spaces wide //WrapTextWidth = 100, // greater than zero so we will word wrap at 100 pixels wide HorizontalAlignment = HorizontalAlignment.Center, VerticalAlignment = VerticalAlignment.Center }; IBrush brush = Brushes.Solid(Color.Parse(text.FillColor)); IPen pen = Pens.Solid(Color.Parse(text.OutlineColor), 2); //string text = "sample text"; string words = text.GetMemeText(random, replacements); // draws a star with Horizontal red and blue hatching with a dash dot pattern outline. Font f = await getFont(text, words); await Task.Run( () => image.Mutate( x => x.DrawText( new DrawingOptions() { TextOptions = options }, words, f, brush, pen, findCenter(text) ) ) ); } using (var ms = new MemoryStream()) { image.Save(ms, new PngEncoder()); return(ms.ToArray()); } }
public async Task <byte[]> ProcessImage(ImageMeme meme, params string[] replacements) { var factory = new MagickImageFactory(); using (var image = factory.Create(await(await imageStore.GetImageAsync(meme.Template.ImageBaseIdentifier)).GetBytes())) { List <MagickImage> MemeTexts = new List <MagickImage>(); foreach (var m in meme.Template.memeText) { MagickImage mti; try { mti = new MagickImage($"caption:{m.GetMemeText(random, replacements)}", Composition(m)); } catch (Exception e) { throw e; } MemeTexts.Add(mti); // well there's your problem // image.Composite(mti,m.XStartPosition,m.YStartPosition,CompositeOperator.Over); await Task.Run(() => { image.Composite(mti, m.XStartPosition, m.YStartPosition, CompositeOperator.Over); }); // } var bytes = await Task.Run <byte[]>(() => { return(image.ToByteArray()); }); // dispose our dynamic images //image.Write(writeStream); foreach (var m in MemeTexts) { m.Dispose(); } return(bytes); } }
public Task <byte[]> ProcessImage(ImageMeme meme, params string[] replacements) { throw new System.NotImplementedException(); }