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

  • Автор темы Автор темы samsonnn
  • Дата начала Дата начала

samsonnn

Client
Регистрация
02.06.2015
Сообщения
2 151
Реакции
2 030
Баллы
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);
   }
}


Lh2Uc.jpg



zk294.jpg


gGz2C.jpg


0Nmuy.jpg
 
Последнее редактирование:
Наистраннейший вопрос, коллеги.

А можно ли отбросить тень от текста этим способом?
 
Наистраннейший вопрос, коллеги.

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

Но, на изображениях с тёмным/чёрным фоном видно не будет.
 
Ребята перестаньте долбить мне в ЛС, вот вам сниппет, пользуйтесь на здоровье
Круто, спасибо! А не подскажите, если текста много, то как отцентрировать его по вертикали?
 
Спасибо автору за сниппет. У меня один вопрос, как центровать текст по ширине изображения? Метод rectangle как понимаю не имеет свойства center ну или что-то подобное.
 
приветствую, могли бы подсказать, как правильно сделать в данном сниппете текст под нужным углом.
По-сути за расположение текста под углом отвечает -
int angle = -45;//угол поворота текста
хотелось бы его срастить с данным кодом.
Был бы благодарен за подсказку или наводку.
 
Добрый день.
Подскажите как сделать НАЛОЖЕНИЕ одной картинки на поверх другой?
 
Тут понадобилось и мне текст на картинку впердолить, да так, что бы у него выравнивание по центру было и по горизонтали, и по вертикали. И одна из перегрузок 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);
 
Последнее редактирование:
Автору спасибо огромное , может подскажете, как сделать размытие по области ? Смотрел вашу конкурсную статью но там размывает всю картинку, а нужно задать прямоугольник по координатам.

75252
 
Тут понадобилось и мне текст на картинку впердолить, да так, что бы у него выравнивание по центру было и по горизонтали, и по вертикали. И одна из перегрузок 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]
 
соре, что поднимаю старую тему, но где в этом коде сам текст для картинки? При попытке запустить:
Компиляция кода Ошибка в действии "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
соре, что поднимаю старую тему, но где в этом коде сам текст для картинки? При попытке запустить:
Компиляция кода Ошибка в действии "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
коллеги, подскажите как к этой всей красоте добавить обводку текста?)
 

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