Текст на изображении

samsonnn

Client
Joined
Jun 2, 2015
Messages
1,952
Reaction score
1,690
Points
113
Ребята перестаньте долбить мне в ЛС, вот вам сниппет, пользуйтесь на здоровье:

C#:
string InputImagePath = project.Variables["InputImagePath"].Value; // В переменной InputImagePath указать путь к изображению
string SaveImagePath = project.Variables["SaveImagePath"].Value; // В переменной SaveImagePath указать путь куда сохраняем обработанное изображение
string font = "Arial"; // Шрифт текста, по желанию можно подставить переменную project.Variables["font"].Value; вместо "Arial";
int fontSize = 28; // Размер шрифта, по желанию можно подставить переменную int.Parse(project.Variables["fontSize"].Value); вместо 28;
using(Image image = Image.FromFile(InputImagePath)){
    using(Graphics graphics = Graphics.FromImage(image)){
         graphics.DrawString(project.Variables["Text"].Value, // В переменной Text находится текст который нужно наложить на изображение
                  new Font(font, fontSize, FontStyle.Regular, GraphicsUnit.World),
                  new SolidBrush(Color.White), // Цвет текста
                  new RectangleF(10, 10, image.Width, image.Height)); // текст сверху, 10, 10 это отступ слева и сверху
                  //new RectangleF(10, image.Height / 2 - fontSize, image.Width, image.Height)); //если нужен текст по центру, раскоментировать, а верхнюю закоментировать
    image.Save(SaveImagePath, System.Drawing.Imaging.ImageFormat.Jpeg);
   }
}








 
Last edited:

ArtDir

Client
Joined
Apr 3, 2019
Messages
48
Reaction score
4
Points
8
Наистраннейший вопрос, коллеги.

А можно ли отбросить тень от текста этим способом?
 

zortexx

Client
Joined
Sep 19, 2011
Messages
2,520
Reaction score
1,226
Points
113
Наистраннейший вопрос, коллеги.

А можно ли отбросить тень от текста этим способом?
Тень - это темносерая, слегка размытая копия того же текста с небольшим сдвигом по осям. Сначала генерируем тень, потом поверх располагаем текст.

Но, на изображениях с тёмным/чёрным фоном видно не будет.
 

MrNik

Новичок
Joined
May 19, 2020
Messages
1
Reaction score
0
Points
1
Ребята перестаньте долбить мне в ЛС, вот вам сниппет, пользуйтесь на здоровье
Круто, спасибо! А не подскажите, если текста много, то как отцентрировать его по вертикали?
 

Spaik

Client
Joined
May 25, 2015
Messages
42
Reaction score
3
Points
8
Спасибо автору за сниппет. У меня один вопрос, как центровать текст по ширине изображения? Метод rectangle как понимаю не имеет свойства center ну или что-то подобное.
 

5nizza

Client
Joined
Nov 16, 2012
Messages
6
Reaction score
3
Points
3
приветствую, могли бы подсказать, как правильно сделать в данном сниппете текст под нужным углом.
По-сути за расположение текста под углом отвечает -
int angle = -45;//угол поворота текста
хотелось бы его срастить с данным кодом.
Был бы благодарен за подсказку или наводку.
 

nikolius

Новичок
Joined
Jun 2, 2016
Messages
14
Reaction score
6
Points
3
Добрый день.
Подскажите как сделать НАЛОЖЕНИЕ одной картинки на поверх другой?
 

semafor

Client
Joined
Dec 27, 2016
Messages
289
Reaction score
406
Points
63
Тут понадобилось и мне текст на картинку впердолить, да так, что бы у него выравнивание по центру было и по горизонтали, и по вертикали. И одна из перегрузок DrawString позволяет такое реализовать, с помощью объекта StringFormat. Собсно сниппет:

C#:
string bgPath = project.Directory+"image_in.jpg"//путь и имя файла с которым будем работать;
string saveImgPath = project.Directory+"image_out.jpg"//путь и имя файла для сохранения;

Image image = Image.FromFile(bgPath);//картинка из файла
   
Graphics graphics = Graphics.FromImage(image);
   
    Font drawFont = new Font("Arial", 24, FontStyle.Regular, GraphicsUnit.World);
    //цвет
    SolidBrush drawBrush = new SolidBrush(Color.White);
    //отступы слева, сверху, размер прямоугольника в который будет вписан текст
    RectangleF drawRect = new RectangleF(100, 100, image.Width-200, image.Height-200);
    //выравнивание текста
    StringFormat drawFormat = new StringFormat();
    //горизонтальное
    drawFormat.Alignment = StringAlignment.Center;
    //вертикальное
    drawFormat.LineAlignment = StringAlignment.Center;
    //пишем текст
    graphics.DrawString(text, drawFont, drawBrush,drawRect,drawFormat);
    //сохраняем файл    
    image.Save(saveImgPath, System.Drawing.Imaging.ImageFormat.Jpeg);
 
Last edited:

Ikigai

Client
Joined
Dec 13, 2016
Messages
276
Reaction score
27
Points
28
Автору спасибо огромное , может подскажете, как сделать размытие по области ? Смотрел вашу конкурсную статью но там размывает всю картинку, а нужно задать прямоугольник по координатам.

75252
 

proektion

Client
Joined
Oct 10, 2019
Messages
12
Reaction score
3
Points
3
Тут понадобилось и мне текст на картинку впердолить, да так, что бы у него выравнивание по центру было и по горизонтали, и по вертикали. И одна из перегрузок DrawString позволяет такое реализовать, с помощью объекта StringFormat. Собсно сниппет:

C#:
string bgPath = project.Directory+"image_in.jpg"//путь и имя файла с которым будем работать;
string saveImgPath = project.Directory+"image_out.jpg"//путь и имя файла для сохранения;

Image image = Image.FromFile(bgPath);//картинка из файла
  
Graphics graphics = Graphics.FromImage(image);
  
    Font drawFont = new Font("Arial", 24, FontStyle.Regular, GraphicsUnit.World);
    //цвет
    SolidBrush drawBrush = new SolidBrush(Color.White);
    //отступы слева, сверху, размер прямоугольника в который будет вписан текст
    RectangleF drawRect = new RectangleF(100, 100, image.Width-200, image.Height-200);
    //выравнивание текста
    StringFormat drawFormat = new StringFormat();
    //горизонтальное
    drawFormat.Alignment = StringAlignment.Center;
    //вертикальное
    drawFormat.LineAlignment = StringAlignment.Center;
    //пишем текст
    graphics.DrawString(text, drawFont, drawBrush,drawRect,drawFormat);
    //сохраняем файл   
    image.Save(saveImgPath, System.Drawing.Imaging.ImageFormat.Jpeg);
соре, что поднимаю старую тему, но где в этом коде сам текст для картинки? При попытке запустить:
Компиляция кода Ошибка в действии "CS0103" "Имя "text" отсутствует в текущем контексте". [Строка: 18; Cтолбец: 25]
 

samsonnn

Client
Joined
Jun 2, 2015
Messages
1,952
Reaction score
1,690
Points
113
соре, что поднимаю старую тему, но где в этом коде сам текст для картинки? При попытке запустить:
Компиляция кода Ошибка в действии "CS0103" "Имя "text" отсутствует в текущем контексте". [Строка: 18; Cтолбец: 25]
C#:
string bgPath = project.Directory+"image_in.jpg"//путь и имя файла с которым будем работать;
string saveImgPath = project.Directory+"image_out.jpg"//путь и имя файла для сохранения;
string text = project.Variables["Text"].Value; // переменная с текстом который будет на изображении.
Image image = Image.FromFile(bgPath);//картинка из файла
Graphics graphics = Graphics.FromImage(image);
    Font drawFont = new Font("Arial", 24, FontStyle.Regular, GraphicsUnit.World);
    //цвет
    SolidBrush drawBrush = new SolidBrush(Color.White);
    //отступы слева, сверху, размер прямоугольника в который будет вписан текст
    RectangleF drawRect = new RectangleF(100, 100, image.Width-200, image.Height-200);
    //выравнивание текста
    StringFormat drawFormat = new StringFormat();
    //горизонтальное
    drawFormat.Alignment = StringAlignment.Center;
    //вертикальное
    drawFormat.LineAlignment = StringAlignment.Center;
    //пишем текст
    graphics.DrawString(text, drawFont, drawBrush,drawRect,drawFormat);
    //сохраняем файл   
    image.Save(saveImgPath, System.Drawing.Imaging.ImageFormat.Jpeg);
 
  • Thank you
Reactions: proektion

volody00

Client
Joined
Sep 6, 2016
Messages
978
Reaction score
1,067
Points
93
соре, что поднимаю старую тему, но где в этом коде сам текст для картинки? При попытке запустить:
Компиляция кода Ошибка в действии "CS0103" "Имя "text" отсутствует в текущем контексте". [Строка: 18; Cтолбец: 25]
C#:
string bgPath = project.Directory+ @"\1.png";//путь и имя файла с которым будем работать;
string saveImgPath = project.Directory+ @"\image_out.jpg";//путь и имя файла для сохранения;
string text = "Мой текст";

Image image = Image.FromFile(bgPath);//картинка из файла
  
Graphics graphics = Graphics.FromImage(image);
  
    Font drawFont = new Font("Arial", 24, FontStyle.Regular, GraphicsUnit.World);
    //цвет
    SolidBrush drawBrush = new SolidBrush(Color.White);
    //отступы слева, сверху, размер прямоугольника в который будет вписан текст
    RectangleF drawRect = new RectangleF(100, 100, image.Width-200, image.Height-200);
    //выравнивание текста
    StringFormat drawFormat = new StringFormat();
    //горизонтальное
    drawFormat.Alignment = StringAlignment.Center;
    //вертикальное
    drawFormat.LineAlignment = StringAlignment.Center;
    //пишем текст
    graphics.DrawString(text, drawFont, drawBrush,drawRect,drawFormat);
    //сохраняем файл   
    image.Save(saveImgPath, System.Drawing.Imaging.ImageFormat.Jpeg);
 
  • Thank you
Reactions: proektion

intagens

Client
Joined
Sep 28, 2015
Messages
210
Reaction score
31
Points
28
коллеги, подскажите как к этой всей красоте добавить обводку текста?)
 

Users Who Are Viewing This Thread (Total: 1, Members: 0, Guests: 1)