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

samsonnn

Client
Регистрация
02.06.2015
Сообщения
1 622
Благодарностей
1 297
Баллы
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);
   }
}








 
Последнее редактирование:

ArtDir

Client
Регистрация
03.04.2019
Сообщения
50
Благодарностей
4
Баллы
8
Наистраннейший вопрос, коллеги.

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

zortexx

Client
Регистрация
19.09.2011
Сообщения
2 520
Благодарностей
1 221
Баллы
113
Наистраннейший вопрос, коллеги.

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

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

MrNik

Новичок
Регистрация
19.05.2020
Сообщения
1
Благодарностей
0
Баллы
1
Ребята перестаньте долбить мне в ЛС, вот вам сниппет, пользуйтесь на здоровье
Круто, спасибо! А не подскажите, если текста много, то как отцентрировать его по вертикали?
 

Spaik

Client
Регистрация
25.05.2015
Сообщения
42
Благодарностей
3
Баллы
8
Спасибо автору за сниппет. У меня один вопрос, как центровать текст по ширине изображения? Метод rectangle как понимаю не имеет свойства center ну или что-то подобное.
 

5nizza

Client
Регистрация
16.11.2012
Сообщения
5
Благодарностей
1
Баллы
3
приветствую, могли бы подсказать, как правильно сделать в данном сниппете текст под нужным углом.
По-сути за расположение текста под углом отвечает -
int angle = -45;//угол поворота текста
хотелось бы его срастить с данным кодом.
Был бы благодарен за подсказку или наводку.
 

nikolius

Новичок
Регистрация
02.06.2016
Сообщения
13
Благодарностей
5
Баллы
3
Добрый день.
Подскажите как сделать НАЛОЖЕНИЕ одной картинки на поверх другой?
 

semafor

Client
Регистрация
27.12.2016
Сообщения
289
Благодарностей
396
Баллы
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);
 
Последнее редактирование:

Ikigai

Client
Регистрация
13.12.2016
Сообщения
275
Благодарностей
27
Баллы
28
Автору спасибо огромное , может подскажете, как сделать размытие по области ? Смотрел вашу конкурсную статью но там размывает всю картинку, а нужно задать прямоугольник по координатам.

75252
 

proektion

Client
Регистрация
10.10.2019
Сообщения
9
Благодарностей
1
Баллы
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
Регистрация
02.06.2015
Сообщения
1 622
Благодарностей
1 297
Баллы
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);
 
  • Спасибо
Реакции: proektion

volody00

Client
Регистрация
06.09.2016
Сообщения
796
Благодарностей
810
Баллы
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);
 
  • Спасибо
Реакции: proektion

intagens

Client
Регистрация
28.09.2015
Сообщения
207
Благодарностей
31
Баллы
28
коллеги, подскажите как к этой всей красоте добавить обводку текста?)
 

Кто просматривает тему: (Всего: 1, Пользователи: 0, Гости: 1)