0 / 0 / 1
Регистрация: 03.11.2018
Сообщений: 33
1

Автоматическое добавление надписи ко всем изображениям заданного формата в выбранной директории

16.06.2019, 12:42. Показов 1013. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем привет! вот задание: "Создать приложение, которое позволяет добавлять указанному изображению
заданную надпись (шрифт, размер, цвет, координаты указывает
пользователь). Добавить возможность автоматического добавления надписи
ко всем изображениям заданного формата в выбранной директории (с учетом
вложенных папок)
." я сделал половину, а вот что выделено шрифтом, никак не получается, если есть у кого-то идеи буду рад выслушать их, спасибо!
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
namespace GUI
{
    public partial class Form1 : Form
    {
 
        public Form1()
        {
            InitializeComponent();
        }
        Image MemForImage;
        private void button1_Click(object sender, EventArgs e) // ОТКРЫТИЕ
        {
            openFileDialog1.Filter = "All Files (*.*)| *.*| Image Files(*.JPG)|*.JPG| Image Files(*.GIF)|*.GIF| Image Files(*.PNG)|*.PNG | Image Files(*.BMP)|*.BMP";
 
            if (openFileDialog1.ShowDialog() == DialogResult.OK)
            {
                try // безопасная попытка 
                {
                    MemForImage = Image.FromFile(openFileDialog1.FileName);   // пытаемся загрузить файл с именем openFileDialog1.FileName - выбранный пользователем файл.
                    pictureBox1.Image = MemForImage;// устанавливаем картинку в поле элемента PictureBox 
                }
                catch (Exception ex) // если попытка загрузки не удалась 
                {
                    MessageBox.Show("Не удалось загрузить файл: " + ex.Message);// выводим сообщение с причиной ошибки 
                }
 
            }
            buttonText.Visible = true;
            buttonTextColor.Visible = true;
            buttonTextFont.Visible = true;
            textBox1.Visible = true;
            textBoxOX.Visible = true;
            textBoxOY.Visible = true;
            textBoxX.Visible = true;
            textBoxY.Visible = true;
            buttonAll.Visible = true;
      
    }
 
        private void button2_Click(object sender, EventArgs e) //СОХРАНЕНИЕ
        {
            if (pictureBox1.Image != null)
            {
                Bitmap bmpSave = new Bitmap(pictureBox1.DisplayRectangle.Width, pictureBox1.DisplayRectangle.Height);
                pictureBox1.DrawToBitmap(bmpSave, pictureBox1.DisplayRectangle);
                SaveFileDialog sfd = new SaveFileDialog();
                sfd.DefaultExt = "bmp";
                sfd.Filter = "All Files (*.*)| *.*| Image Files(*.JPG)|*.JPG| Image Files(*.GIF)|*.GIF| Image Files(*.PNG)|*.PNG | Image Files(*.BMP)|*.BMP";
                if (sfd.ShowDialog() == DialogResult.OK)
                {
                    bmpSave.Save(sfd.FileName, System.Drawing.Imaging.ImageFormat.Bmp);
                }
            }
 
        }
 
        private void buttonClean_Click(object sender, EventArgs e) // ОЧИЩЕНИЕ
        {
            pictureBox1.Image = null;
            textBox1.Text = null;
            buttonText.Visible = false;
            buttonTextColor.Visible = false;
            buttonTextFont.Visible = false;
            textBox1.Visible = false;
            textBoxOX.Visible = false;
            textBoxOY.Visible = false;
            textBoxX.Visible = false;
            textBoxY.Visible = false;
            buttonAll.Visible = false;
        }
        
        public void pictureBox1_Paint(object sender, PaintEventArgs e)
        {
            int i = Int32.Parse(textBoxOX.Text);
            int j = Int32.Parse(textBoxOY.Text);
 
            e.Graphics.DrawString(textBox1.Text, textBox1.Font, new SolidBrush(colorDialog1.Color), new Point (i,j)); //перерисовка текста
        }
 
        private void buttonText_Click(object sender, EventArgs e)
        {
            pictureBox1.Invalidate(); //команда на перерисовку текста
        }
 
        private void buttonTextFont_Click(object sender, EventArgs e)
        {
            if (fontDialog1.ShowDialog() == DialogResult.OK)
            {
                textBox1.Font = fontDialog1.Font; //Меняет шрифт 
            }               
        }
 
        public void buttonTextColor_Click(object sender, EventArgs e)
        {
            if (colorDialog1.ShowDialog() == DialogResult.OK)
            {
                textBox1.ForeColor = colorDialog1.Color;
            }
        } 
    }     
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
16.06.2019, 12:42
Ответы с готовыми решениями:

автоматическое добавление колонтитула ко всем документам.
Здравствуйте, подскажите пожалуйста! В организации стоят 2003/2007/2010 ворды и эксели, реально ли...

Добавить всем изображениям атрибут data-*
Ребятки нужна помощь. Нужно всем изображениям поста добавить атрибут data-social, т.е. из такого...

Автоматическое добавление заданного количества строк с наполнением
В ступоре, подскажите кто чем может. приложил файл, мне нужно, чтобы при выборе количества в...

Добавление Include-директории и Lib-директории в проект VS2010
Здравствуйте. У меня возникла следующая проблема: Решил поучится в использовании библиотек...

4
1440 / 902 / 446
Регистрация: 06.02.2012
Сообщений: 2,772
16.06.2019, 14:33 2
Shved73, Нужно указать размер и шрифт
C#
1
 e.Graphics.DrawString("Текст", new Font("Microsoft Sans Serif", 15, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, 204), new SolidBrush(Color.Black), new Point(20, 20));
0
0 / 0 / 1
Регистрация: 03.11.2018
Сообщений: 33
16.06.2019, 14:52  [ТС] 3
C#
1
e.Graphics.DrawString(textBox1.Text, textBox1.Font, new SolidBrush(colorDialog1.Color), new Point (i,j)
У меня это сделано, я бы хотел наложить на кнопку свойство, которое выбирает из папки фотографии нужного формата (который указывает пользователь) и накладывает на них текст, а потом сохраняет. Это вообще возможно сделать?

Добавлено через 13 минут
C#
1
2
3
4
5
string rootFolder = @"c:\temp";
foreach (var file in Directory.EnumerateFiles(rootFolder, "*", SearchOption.AllDirectories))
{
    File.AppendAllText(file, "текст для добавления");
}
А если использовать что-то вроде этого? только в цикл засунуть перерисовку текста? А вместо пути вставить диалоговое окно?
0
0 / 0 / 1
Регистрация: 03.11.2018
Сообщений: 33
01.07.2019, 14:54  [ТС] 4
Итак, вот мое приложение
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.IO;
 
namespace GUI
{
    public partial class Form1 : Form
    {
 
        public Form1()
        {
            InitializeComponent();
            comboBox1.Items.Add("*.JPG");
            comboBox1.Items.Add("*.GIF");
            comboBox1.Items.Add("*.PNG");
            comboBox1.Items.Add("*.BMP");
            comboBox1.Items.Add("*.*");
        }
        Image MemForImage;
        public void button1_Click(object sender, EventArgs e) // ОТКРЫТИЕ
        {
            openFileDialog1.Filter = "All Files (*.*)| *.*| Image Files(*.JPG)|*.JPG|"+
               "Image Files(*.GIF)|*.GIF| Image Files(*.PNG)|*.PNG| Image Files(*.BMP)|*.BMP";
 
            if (openFileDialog1.ShowDialog() == DialogResult.OK)
            {
                try // безопасная попытка 
                {
                    MemForImage = Image.FromFile(openFileDialog1.FileName);   // пытаемся загрузить файл с именем 
                    //openFileDialog1.FileName - выбранный пользователем файл.
 
                    pictureBox1.Image = MemForImage;// устанавливаем картинку в поле элемента PictureBox 
                }
                catch (Exception ex) // если попытка загрузки не удалась 
                {
                    MessageBox.Show("Не удалось загрузить файл: " + ex.Message);// выводим сообщение с причиной ошибки 
                }
 
            }
 
        }
 
        private void button2_Click(object sender, EventArgs e) //СОХРАНЕНИЕ
        {
            if (pictureBox1.Image != null) 
            {
                // Bitmap - Инкапсулирует точечный рисунок GDI+, 
                //состоящий из данных пикселей графического изображения и атрибутов рисунка.
                Bitmap bmpSave = new Bitmap(pictureBox1.DisplayRectangle.Width, pictureBox1.DisplayRectangle.Height);
                pictureBox1.DrawToBitmap(bmpSave, pictureBox1.DisplayRectangle);
                SaveFileDialog sfd = new SaveFileDialog();
                sfd.DefaultExt = "bmp";
                sfd.Filter = "All Files (*.*)| *.*| Image Files(*.JPG)|*.JPG| " +
                    "Image Files(*.GIF)|*.GIF| Image Files(*.PNG)|*.PNG| Image Files(*.BMP)|*.BMP";
                if (sfd.ShowDialog() == DialogResult.OK)
                {
                    bmpSave.Save(sfd.FileName, System.Drawing.Imaging.ImageFormat.Bmp);
                }
            }
 
        }
 
        private void buttonClean_Click(object sender, EventArgs e) // ОЧИЩЕНИЕ
        {
            pictureBox1.Image = null;
            textBox1.Text = null;
            textBox1.Font = null;
        }
 
        public void pictureBox1_Paint(object sender, PaintEventArgs e)
        {
            int i = Int32.Parse(textBoxOX.Text);
            int j = Int32.Parse(textBoxOY.Text);
 
            e.Graphics.DrawString(textBox1.Text, textBox1.Font, new SolidBrush(colorDialog1.Color), new Point(i, j)); //перерисовка текста
        }
 
        public void buttonText_Click(object sender, EventArgs e)
        {
            pictureBox1.Invalidate(); //команда на перерисовку текста
        }
 
        private void buttonTextFont_Click(object sender, EventArgs e)
        {
            if (fontDialog1.ShowDialog() == DialogResult.OK)
            {
                textBox1.Font = fontDialog1.Font; //Меняет шрифт 
            }
        }
 
        public void buttonTextColor_Click(object sender, EventArgs e)
        {
            if (colorDialog1.ShowDialog() == DialogResult.OK)
            {
                textBox1.ForeColor = colorDialog1.Color;
            }
        }
 
        private void buttonAll_Click(object sender, EventArgs e)
        {
 
            int fCount = Directory.GetFiles(@"C:\Users\User\Desktop\TEST", comboBox1.Text, SearchOption.AllDirectories).Length;
            if (comboBox1.Text == "*.JPG")
            {
                openFileDialog1.Filter = "Image Files(*.JPG)|*.JPG";
            }
            else if (comboBox1.Text == "*.GIF")
            {
                openFileDialog1.Filter = "Image Files(*.GIF)|*.GIF";
            }
            else if (comboBox1.Text == "*.PNG")
            {
                openFileDialog1.Filter = "Image Files(*.PNG)|*.PNG";
            }
            else if (comboBox1.Text == "*.BMP")
            {
                openFileDialog1.Filter = "Image Files(*.BMP)|*.BMP";
            }
            else  
            {
                openFileDialog1.Filter = "All Files(*.*)|*.*";
            }
            
            for (int i = 0; i < fCount;  i++)
            {
                if (openFileDialog1.ShowDialog() == DialogResult.OK)
                {
                    try // безопасная попытка 
                    {
                        MemForImage = Image.FromFile(openFileDialog1.FileName);   // пытаемся загрузить файл с именем
                        //openFileDialog1.FileName - выбранный пользователем файл.
 
                        pictureBox1.Image = MemForImage;// устанавливаем картинку в поле элемента PictureBox 
                    }
                    catch (Exception ex) // если попытка загрузки не удалась 
                    {
                        MessageBox.Show("Не удалось загрузить файл: " + ex.Message);// выводим сообщение с причиной ошибки 
                    }
                }
 
                PaintEventArgs p = new PaintEventArgs(pictureBox1.CreateGraphics(), pictureBox1.Bounds); //Компонент на котором нужно
                //рисовать и область на которой нужно рисовать
 
                pictureBox1_Paint(sender, p);
                pictureBox1.Invalidate();
 
                if (pictureBox1.Image != null)
                {
                    Bitmap bmpSave = new Bitmap(pictureBox1.DisplayRectangle.Width, pictureBox1.DisplayRectangle.Height);
                    pictureBox1.DrawToBitmap(bmpSave, pictureBox1.DisplayRectangle);
                    SaveFileDialog sfd = new SaveFileDialog();
                    
                    sfd.Filter = "All Files (*.*)| *.*| Image Files(*.JPG)|*.JPG| Image Files(*.GIF)|*.GIF| " +
                        "Image Files(*.PNG)|*.PNG| Image Files(*.BMP)|*.BMP";
 
                    if (sfd.ShowDialog() == DialogResult.OK)
                    {
                        bmpSave.Save(sfd.FileName, System.Drawing.Imaging.ImageFormat.Bmp);
                    }
                }
            }
            
        }
    }
 
}
0
910 / 814 / 332
Регистрация: 03.02.2015
Сообщений: 5,248
Записей в блоге: 9
01.07.2019, 18:00 5
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
 
namespace Text
{
    public partial class MainForm : Form
    {
        /// <summary>
        /// Картинка
        /// </summary>
        private Image CurentImage;
 
        /// <summary>
        /// Область текста
        /// </summary>
        private RectangleF TextRect = new RectangleF(0,0, 50, 50);
 
        /// <summary>
        /// Размер текста
        /// </summary>
        private int TextSize = 20;
 
        /// <summary>
        /// Текс для отрисовки
        /// </summary>
        private string DrawText = "0";
 
        /// <summary>
        /// 
        /// </summary>
        private bool MoveText = false;
 
 
        public MainForm()
        {
            InitializeComponent();
        }
 
 
        private void ButtonOpen_Click(object sender, EventArgs e)
        {
            var ofd = new OpenFileDialog();
 
            if (ofd.ShowDialog() != DialogResult.OK) { return; }
 
            try { CurentImage = Image.FromFile(ofd.FileName); Invalidate(); }
            catch { MessageBox.Show("Error!"); }
        }
 
        private void MainForm_KeyPress(object sender, KeyPressEventArgs e)
        {
            DrawText += e.KeyChar.ToString();
            Invalidate();
        }
 
        private void Form1_MouseDown(object sender, MouseEventArgs e)
        {
            if (e.Button == MouseButtons.Left)
            {
                MoveText = true;
            }
        }
 
        private void Form1_MouseMove(object sender, MouseEventArgs e)
        {
            if (e.Button == MouseButtons.Left && MoveText)
            {
                var ts = TextRect.Size;
                TextRect = new RectangleF(e.X, e.Y, ts.Width, ts.Height);
                Invalidate();
            }
        }
 
        private void Form1_MouseUp(object sender, MouseEventArgs e)
        {
            MoveText = false;
            Invalidate();
        }
 
        /// <summary>
        /// Отрисовка на форме
        /// </summary>
        /// <param name="e"></param>
        protected override void OnPaint(PaintEventArgs e)
        {
            var g = e.Graphics;
 
            if (CurentImage == null) { return; }
 
            g.DrawImage(CurentImage, new Point());
 
            using (var font = new Font("", TextSize))
            {
                var sizeDrawText = g.MeasureString(DrawText, font);
 
                TextRect = new RectangleF(new Point((int)TextRect.X, (int)TextRect.Y), sizeDrawText);
 
                g.DrawString(DrawText, font, Brushes.Red, TextRect);
            }
 
            if ( MoveText)
            {
                g.DrawRectangle(Pens.Wheat, new Rectangle((int)TextRect.X, (int)TextRect.Y, (int)TextRect.Width, (int)TextRect.Height));
            }
        }
    }
}
Миниатюры
Автоматическое добавление надписи ко всем изображениям заданного формата в выбранной директории  
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
01.07.2019, 18:00
Помогаю со студенческими работами здесь

Cписок файлов в выбранной директории
Задача написана в заголовке, надеюсь на помощь

Подключение к БД из выбранной пользователем директории
Здравствуйте- у меня тут созрел вопрос- гуглить пробовал- то ли не могу правильно построить запрос-...

Создание файла с текстом в выбранной директории
Всем привет! Подскажите пожалуйста новичку:) как создать файл &quot;1.txt&quot; с текстом в выбранной...

Вывод списка файлов из выбранной директории
Необходимо вывести на экран список файлов из директории, заданной пользователем. //...

Webkitdirectory как узнать путь выбранной директории?
Всем доброго времени суток, долго искал но не нашел нужную информацию. Поставил задачу открыть...

Создать в выбранной в диалоговом окне директории папку
Вообще надо несколько, но не получается ни одной, кидает не в выбранную папку, а рядом, при этом...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru