Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/15: Рейтинг темы: голосов - 15, средняя оценка - 5.00
5 / 5 / 2
Регистрация: 22.10.2012
Сообщений: 249

Открыть существующий файл png и дорисовать в него текст из файла

23.01.2019, 12:12. Показов 3106. Ответов 17
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день, коллеги!

Подскажите возможно ли сделать консульскою программу которая открывала бы существующий файл png и дорисовывала текст из файла.
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
23.01.2019, 12:12
Ответы с готовыми решениями:

Как открыть созданный файл и добавить в него текст?
Программа по нажатию кнопки создается папка а в ней файл, имя файла с поля edit1, имя папки с поля Edit2. Не знаю как написать код чтоб в...

Файлы: программа считывает текст из файла, добавляет в него текст, переименовывает, копирует и удаляет файл
составить программу,которая обеспечивает выполнение след.операций над текстовым файлом:считывает текст из файла,добавляет в него...

Не удаётся открыть существующий файл
Имеется: string PathToFile = "D:\\DnS\\Visual Studio\\Projects\\TOI2\\Debug\\TIO2.txt"; _sopen_s(&fd, PathToFile.c_str(), _O_BINARY...

17
 Аватар для SomniPhobia
602 / 439 / 137
Регистрация: 22.11.2017
Сообщений: 1,405
23.01.2019, 15:01
В плане дорисовывала? На основе чего, данные нужны чтобы дорисовывать.
Можно, используй SFML или другую стороннюю библиотеку чтобы прочитать изображение и изменять его пикселы.
0
5 / 5 / 2
Регистрация: 22.10.2012
Сообщений: 249
23.01.2019, 15:22  [ТС]
Есть картинка. (во вложении)
Хочу в координаторах x; y написать "тут текст"
Миниатюры
Открыть существующий файл png и дорисовать в него текст из файла   Открыть существующий файл png и дорисовать в него текст из файла  
0
143 / 92 / 34
Регистрация: 30.01.2018
Сообщений: 469
23.01.2019, 15:42
SFML в помощь, но изучать ты там будешь все очень долго.
0
 Аватар для SomniPhobia
602 / 439 / 137
Регистрация: 22.11.2017
Сообщений: 1,405
23.01.2019, 17:41
Да, SFML нужно подключить к проекту C++ и можно будет текст прописать на изображение.
Вот фрагменты кодов, которые помогут тебе, если сумеешь для начала SFML подрубить.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
Image img;
        img.loadFromFile(file_name_in);
 
//Загрузка шрифтов
        sf::Font font;
        if (!font.loadFromFile("C:\\Windows\\Fonts\\arial.ttf"))
        {
            cout << "Ошибка чтения шрифта" << endl;
        }
        Text text;
        text.setFont(font);
        text.setCharacterSize(font_size); //В пикселях, а не точках!
        text.setFillColor(sf::Color::Green);
        text.setStyle(sf::Text::Bold);
 
text.setString(to_string("Текст"));
text.setPosition(x, y);
 
//Добавить текст на изображение
 
img.saveToFile(file_name_out);
0
5 / 5 / 2
Регистрация: 22.10.2012
Сообщений: 249
24.01.2019, 10:27  [ТС]
А как сделать "Добавить текст на изображение"
0
 Аватар для SomniPhobia
602 / 439 / 137
Регистрация: 22.11.2017
Сообщений: 1,405
24.01.2019, 13:03
JleHuH213, честно? Не знаю. Я добавлял текст только в окно. На изображение не пробовал.
0
Mental handicap
 Аватар для Azazel-San
1246 / 624 / 171
Регистрация: 24.11.2015
Сообщений: 2,429
24.01.2019, 13:09
Цитата Сообщение от SomniPhobia Посмотреть сообщение
Я добавлял текст только в окно. На изображение не пробовал.
А есть разница?)
0
 Аватар для SomniPhobia
602 / 439 / 137
Регистрация: 22.11.2017
Сообщений: 1,405
24.01.2019, 13:26
Цитата Сообщение от Azazel-San Посмотреть сообщение
А есть разница?)
Окно window. Добавляю как windows.draw();
Изображение Image. Как туда добавлять?
0
Параллельный Кот
 Аватар для valen10
1905 / 827 / 350
Регистрация: 25.03.2016
Сообщений: 2,045
24.01.2019, 13:32
Лучший ответ Сообщение было отмечено JleHuH213 как решение

Решение

Так что-ли?

Код
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
#include <iostream>
#include <fstream>
#include <string>
#include <SFML/Graphics.hpp>
 
int main() {
    const std::string load_image_file_name = "image.png";
    const std::string save_image_file_name = "image_new.png";
    const std::string text_file_name = "text.txt";
 
    // Загрузка изображения.
    sf::Texture image_texture;
    if (!image_texture.loadFromFile(load_image_file_name)) {
        std::cerr << "Error load " << load_image_file_name << std::endl;
        return 1;
    }
 
    sf::Sprite image(image_texture);
 
    // Подготовка поверхности для рисования.
    sf::RenderTexture rt;
    rt.create(image_texture.getSize().x, image_texture.getSize().y);
    rt.clear();
    rt.draw(image);
 
    // Загрузка шрифта для рисования.
    sf::Font font;
    if (!font.loadFromFile("arial.ttf")) { /* Тут нужно указать полный путь к файлу! */
        std::cerr << "Error load font" << std::endl;
        return 1;
    }
 
    // Открытие файла с текстом.
    std::ifstream fin(text_file_name);
    if (!fin) {
        std::cerr << "Error load " << text_file_name << std::endl;
        return 1;
    }
 
    while (fin) {
        sf::Vector2f text_pos;
        unsigned font_size;
        std::string text_str;
 
        // Загрузка текста для рисования.
        fin >> text_pos.x >> text_pos.y >> font_size;
        getline(fin, text_str);
 
        if (!fin) {
            break;
        }
 
        sf::Text text;
        text.setFont(font);
        text.setString(text_str);
        text.setCharacterSize(font_size);
        text.setFillColor(sf::Color::Black);
        text.setStyle(sf::Text::Bold);
        text.move(text_pos);
 
        // Рисование текста.
        rt.draw(text);
    }
 
    // Рисование закончено.
    rt.display();
 
    // Сохранить результат в файл.
    if (!rt.getTexture().copyToImage().saveToFile(save_image_file_name)) {
        std::cerr << "Error save " << save_image_file_name << std::endl;
        return 1;
    }
 
    /* ===== Отображение результата в окне. ================================= */
    sf::RenderWindow window(sf::VideoMode(image_texture.getSize().x,
                                          image_texture.getSize().y),
                            "First window!");
    window.setVerticalSyncEnabled(true);
 
    while(window.isOpen()) {
        sf::Event event;
        while (window.pollEvent(event)) {
            if (event.type == sf::Event::Closed) {
                window.close();
            }
        }
 
        sf::Sprite sprite(rt.getTexture());
        window.clear();
        window.draw(sprite);
        window.display();
    }
    /* ===== Код между этими линиями можно удалить. ========================= */
 
    return 0;
}
2
Mental handicap
 Аватар для Azazel-San
1246 / 624 / 171
Регистрация: 24.11.2015
Сообщений: 2,429
24.01.2019, 13:32
SomniPhobia, почитайте что такое Texture и Sprite. Ну и вообще какая разница между нимим и Image.

зы - я бы писал не используя SFML, задачка слишком простая что бы его тащить за собой
0
Параллельный Кот
 Аватар для valen10
1905 / 827 / 350
Регистрация: 25.03.2016
Сообщений: 2,045
24.01.2019, 13:45
Цитата Сообщение от Azazel-San Посмотреть сообщение
зы - я бы писал не используя SFML, задачка слишком простая что бы его тащить за собой
Народ просит
А что бы вы использовали? Допустим, загрузить картинку может libpng (дичь какая-то если честно, так и не разобрался с ним). А текст с помощью чего рисовать?
1
5 / 5 / 2
Регистрация: 22.10.2012
Сообщений: 249
24.01.2019, 13:52  [ТС]
Цитата Сообщение от valen10 Посмотреть сообщение
Так что-ли?
Вы знаете что вы божественны? Спасибо Вам большое!

Среди всех этих пустых разговоров, Вы действуете!
1
Mental handicap
 Аватар для Azazel-San
1246 / 624 / 171
Регистрация: 24.11.2015
Сообщений: 2,429
24.01.2019, 13:53
Цитата Сообщение от valen10 Посмотреть сообщение
А что бы вы использовали?
Тоже что и у SFML под капотом, а именно OpenGL.
Цитата Сообщение от valen10 Посмотреть сообщение
Допустим, загрузить картинку может libpng
Да хоть самому да-да это излишне, но зато как интересно
Я много всяких штук использовал, остановился на самописной, но из попроще есть всякие SOIL он же stb_image, как можно забыть о SDL, devIL (или как-то так), а да хоть через boost можно)
Цитата Сообщение от valen10 Посмотреть сообщение
А текст с помощью чего рисовать?
OpenGL + GLSL.
1
Параллельный Кот
 Аватар для valen10
1905 / 827 / 350
Регистрация: 25.03.2016
Сообщений: 2,045
24.01.2019, 13:57
Azazel-San, надо будет попробовать на досуге все эти штуки Спасибо за советы.
0
Mental handicap
 Аватар для Azazel-San
1246 / 624 / 171
Регистрация: 24.11.2015
Сообщений: 2,429
24.01.2019, 13:59
valen10, но предупреждаю, кода будет в разы больше))
0
5 / 5 / 2
Регистрация: 22.10.2012
Сообщений: 249
24.01.2019, 14:18  [ТС]
valen10, Подскажите пожалуйста возможно ли сделать так что бы фон на картинке был прозрачный.. при обработки таких изображений:
Миниатюры
Открыть существующий файл png и дорисовать в него текст из файла  
0
Параллельный Кот
 Аватар для valen10
1905 / 827 / 350
Регистрация: 25.03.2016
Сообщений: 2,045
24.01.2019, 14:25
JleHuH213, да, исправьте строку 23 на rt.clear(sf::Color::Transparent);. И фон действительно должен быть прозрачным, на вашей картинке на фоне шахматка нарисована.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
24.01.2019, 14:25
Помогаю со студенческими работами здесь

Открыть существующий файл с CreateFile
hFile = CreateFile(L&quot;\\\\.\\C:&quot;, GENERIC_READ, FILE_SHARE_READ | FILE_SHARE_WRITE, NULL, OPEN_EXISTING, 0, 0); Обясните плз, что...

Открыть существующий текстовый файл и копировать его в новый файл, с заменой всех букв нижнего регистра
напишите программу, которая бы открывала существующий текстовый файл и копировала его в новый файл, с заменой всех букв нижнего регистра на...

Открыть существующий файл для записи
Я совсем запутался! Пытаюсь открыть СУЩЕСТВУЮЩИЙ файл для записи char ch = &quot;c:\\1\\файл.txt&quot;; Сишный способ: FILE *fp; ...

Открыть существующий файл word из excel
Здравствуйте, есть файл excel, в нем макрос, который должен открывать word документ из той же папки, где находится excel, как прописать...

Как открыть существующий Excel файл?
Добрый день, ребята! Пните в правильном направлении, пожалуйста. Есть файл-форма Excel отчета. Как средствами c# MVC можно открыть его....


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

Или воспользуйтесь поиском по форуму:
18
Ответ Создать тему
Новые блоги и статьи
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
Фото: Daniel Greenwood
kumehtar 13.11.2025
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru