Guest User

Untitled

a guest
Jan 23rd, 2018
78
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.47 KB | None | 0 0
  1. using System;
  2. using System.Globalization;
  3. using System.IO;
  4. using System.Windows;
  5. using System.Windows.Media;
  6. using System.Windows.Media.Imaging;
  7.  
  8. namespace Memegen
  9. {
  10. class Program
  11. {
  12. static void Main(string[] args)
  13. {
  14. var imagePath = @"D:input.jpg";
  15. var text = "Это норма!";
  16. var resultPath = @"D:output.jpg";
  17.  
  18. var image = BitmapFrame.Create(new Uri("file://" + imagePath));
  19. var imageWidth = (double)image.PixelWidth;
  20. var imageHeight = (double)image.PixelHeight;
  21.  
  22. var background = Brushes.Black;
  23. var drawingVisual = new DrawingVisual();
  24.  
  25. var textColor = Brushes.White;
  26.  
  27. var font =
  28. new Typeface(
  29. new FontFamily("Segoe UI"), FontStyles.Normal,
  30. FontWeights.Bold, FontStretches.SemiExpanded);
  31. var fontSize = 70;
  32.  
  33. var dpi = 96;
  34. var formattedText =
  35. new FormattedText(
  36. text, CultureInfo.CurrentCulture, FlowDirection.LeftToRight,
  37. font, fontSize, textColor, dpi)
  38. {
  39. MaxTextWidth = imageWidth,
  40. TextAlignment = TextAlignment.Center
  41. };
  42.  
  43. var textWidth = formattedText.Width;
  44. var textHeight = formattedText.Height;
  45.  
  46. var gap = 20;
  47.  
  48. var totalWidth = (int)Math.Ceiling(imageWidth + 2 * gap);
  49. var totalHeight = (int)Math.Ceiling(imageHeight + 3 * gap + textHeight);
  50.  
  51. using (DrawingContext drawingContext = drawingVisual.RenderOpen())
  52. {
  53. drawingContext.DrawRectangle(
  54. background, null,
  55. new Rect(0, 0, totalWidth, totalHeight));
  56.  
  57. drawingContext.DrawImage(
  58. image,
  59. new Rect(gap, gap, imageWidth, imageHeight));
  60. drawingContext.DrawText(
  61. formattedText,
  62. new Point(gap, imageHeight + 2 * gap));
  63. }
  64.  
  65. var bmp =
  66. new RenderTargetBitmap(
  67. totalWidth, totalHeight, dpi, dpi,
  68. PixelFormats.Pbgra32);
  69. bmp.Render(drawingVisual);
  70.  
  71. var encoder = new JpegBitmapEncoder();
  72. encoder.Frames.Add(BitmapFrame.Create(bmp));
  73. using (var stream = File.Create(resultPath))
  74. encoder.Save(stream);
  75. }
  76. }
  77. }
Add Comment
Please, Sign In to add comment