Проблема Необходимо вставить текст со списка в Excel на фото

Николай Карп

Новый пользователь
Сообщения
6
Реакции
0
Баллы
1
Приветы всем.

Есть примерно 500 графических файлов. Нужно в одинаковое место на фото вставить текст (для каждого фото свой текст). Есть список в Экселе - найменование фото и текст который необходимо на него вставить. Каким образом можна это сделать в автоматическом режиме? Не хочется возиться с каждым отдельно...
 

Кирилл

Команда форума
Администратор
Сообщения
14,172
Реакции
6,200
Баллы
1,003
Привет.
А файл excel то можно увидеть?
 

Сергій

Разработчик
Сообщения
543
Реакции
281
Баллы
368
Я так понимаю, Вам нужно это сделать наявным фоторедактором или макросами екселя.
Попробуйте Бейсик:
Скопировать список в буфер обмена и сделать поочередно надписи в рисунках, которые в данной папке.
Но результат будет в формате .bmp - нужно будет конвертировать в .jpg, что тоже можно сделать Бейсиком.
 

regist

гоняюсь за туманом
Ассоциация VN/VIP
VIP
Разработчик
Сообщения
12,884
Реакции
6,157
Баллы
1,008
В экселе это всё делается с результатом в конце виде экселовского файла, а не в виде боевых машин пехоты и прочей графики. Но я знаю как это делать руками. А если вы знаете как создать макрос, то подскажите ТС.
 

Кирилл

Команда форума
Администратор
Сообщения
14,172
Реакции
6,200
Баллы
1,003
Вот вам рабочая программа на Python
Потребуется установить сам Python (лучше версии 3.7* или 3.8) и библиотеки PIL, os и xlrd

Там где подписан комментарий - вставьте свои данные.
Вот код:
Python:
from PIL import Image, ImageDraw
import os
import xlrd

# Укажите внутри кавычек путь к папке с фото и файлом Excel
path_ = r'F:\загрузки\Анонс 21.01.21'
# file.xlsx - имя вашего Excel файла вместе с расширением
bk = xlrd.open_workbook(path_+r'\file.xlsx')
sh = bk.sheet_by_index(0)

for i in range(sh.nrows):
    lst_ = sh.row_values(i, 0)
    if isinstance(lst_[0], float):
        name = path_+'\\'+str(int(lst_[0]))+'.jpg'
    else:
        name = path_+'\\'+str(lst_[0])+'.jpg'
    if os.path.isfile(name):
        img = Image.open(name)
        imgDrawer = ImageDraw.Draw(img)
        # Цифры - это расположение текста по оси Х и У на картинке
        imgDrawer.text((10, 20), str(lst_[1]))
        img.save(name)

Могу упаковать в стандартный EXE файл, но придется всегда подстраиваться под программу.


1.jpg
2.jpg
3.jpg
5.jpg
 
Последнее редактирование:

Николай Карп

Новый пользователь
Сообщения
6
Реакции
0
Баллы
1
Вот вам рабочая программа на Python
Потребуется установить сам Python (лучше версии 3.7* или 3.8) и библиотеки PIL, os и xlrd

Там где подписан комментарий - вставьте свои данные.
Вот код:
Python:
from PIL import Image, ImageDraw
import os
import xlrd

# Укажите внутри кавычек путь к папке с фото и файлом Excel
path_ = r'F:\загрузки\Анонс 21.01.21'
# file.xlsx - имя вашего Excel файла вместе с расширением
bk = xlrd.open_workbook(path_+r'\file.xlsx')
sh = bk.sheet_by_index(0)

for i in range(sh.nrows):
    lst_ = sh.row_values(i, 0)
    if isinstance(lst_[0], float):
        name = path_+'\\'+str(int(lst_[0]))+'.jpg'
    else:
        name = path_+'\\'+str(lst_[0])+'.jpg'
    if os.path.isfile(name):
        img = Image.open(name)
        imgDrawer = ImageDraw.Draw(img)
        # Цифры - это расположение текста по оси Х и У на картинке
        imgDrawer.text((10, 20), str(lst_[1]))
        img.save(name)

Могу упаковать в стандартный EXE файл, но придется всегда подстраиваться под программу.
А как насчёт сделать это в виде html страницы, к примеру фото (одинакового размера) в три столбика на странице, а поверх фото пишется текст (также исходя из файла екселя и названия фото). Если возможно с последующей выгрузкой фото в папку или просто печать страницы в pdf
 

Кирилл

Команда форума
Администратор
Сообщения
14,172
Реакции
6,200
Баллы
1,003
Ничего не понял.
 

Николай Карп

Новый пользователь
Сообщения
6
Реакции
0
Баллы
1
img05fd0e8171478c2.29427265.jpg
Имеется около 200 фото без цен и процентов. Данные о ценах процентах написаны в екселе. С помощью чего можно автоматизировать или полуавтомат зировать перенос текста с екселя на фото, что б сделать такую фотографию.
 
Последнее редактирование модератором:

Кирилл

Команда форума
Администратор
Сообщения
14,172
Реакции
6,200
Баллы
1,003
Ну алгоритм примерно такой - создаём пустой эскиз, размещаем на нем данные из эксель, только теперь не только текст, а несколько изображений.
Верно понимаю?
 

Николай Карп

Новый пользователь
Сообщения
6
Реакции
0
Баллы
1
Ну алгоритм примерно такой - создаём пустой эскиз, размещаем на нем данные из эксель, только теперь не только текст, а несколько изображений.
Верно понимаю?
128129.jpg
img05fd0e8171478c2.29427265.jpg

По поводу алгоритма не понял. Вставил наглядно две картинки до и после. Первая у меня есть готовая и на неё нужно перенести данные из екселя (или вручную записать для каждой фотографии через какую-то программу) чтобы получилась вторая фотография.
В екселе записаны: названия фото, цена 1, цена 2, процент скидки.
 
Последнее редактирование модератором:

Кирилл

Команда форума
Администратор
Сообщения
14,172
Реакции
6,200
Баллы
1,003
Уехал на неделю.
По возвращению посмотрю если никто не ответит
 

regist

гоняюсь за туманом
Ассоциация VN/VIP
VIP
Разработчик
Сообщения
12,884
Реакции
6,157
Баллы
1,008
Вставил наглядно две картинки до и после. Первая у меня есть готовая и на неё нужно перенести данные из екселя (или вручную записать для каждой фотографии через какую-то программу) чтобы получилась вторая фотография.
В екселе записаны: названия фото, цена 1, цена 2, процент скидки.
1) Считаю, что вы вообще неправильно подходите к задаче. Надо не прямо на фото рисовать цену если вам нужен html, а просто средствами сайта выводить цену поверх. Если потом поменяется цена или скидка или фото, то не придётся переделывать.
2) Раз уж выбрали свой вариант решения, то советую ещё спросить в темах поддержки этого дополнения к Тотал Командер, возможно гуру этой программы сделают такую кнопку. Если что, потом поделитесь решением :).
 

Кирилл

Команда форума
Администратор
Сообщения
14,172
Реакции
6,200
Баллы
1,003
regist, я вообще до твоего поста думал что ТС просто картинки хочет...типа ценников что то.
 

regist

гоняюсь за туманом
Ассоциация VN/VIP
VIP
Разработчик
Сообщения
12,884
Реакции
6,157
Баллы
1,008
regist, я вообще до твоего поста думал что ТС просто картинки хочет...типа ценников что то.
Выше написано
А как насчёт сделать это в виде html страницы, к примеру фото (одинакового размера) в три столбика на странице, а поверх фото пишется текст (также исходя из файла екселя и названия фото). Если возможно с последующей выгрузкой фото в папку или просто печать страницы в pdf
А если на сайт со стандартным движком, то там наверняка даже плагины подходящие есть и уже выдумывать не надо. Если что-то простенькое или самопис, то тогда тоже заменить эксел на базу данных и оттуда подтягивать и выводить поверх фото. Ну и потом, имхо, чем с экселом работать (для чего должен быть установленный он на компе) уже лучше с CSV в который можно сохранить из экселя если что.
 
Сверху Снизу