Войти

Показать полную графическую версию : txt to jpg


XXXp
26-01-2015, 01:13
Подскажите пожалуйста, есть желающие помочь (можно не бесплатно) написать простейшую программу, которая брала бы текст из txt файла (или файлов) и вставляла бы его(их) в картинку с белым фоном с таким же названием.jpg. При этом я должен задавать ширину изображения, а высота делается исходя из объема текста.

Все это делает простейшая заброшенная программа http://explayt7.ucoz.ru/news/2009-05-31-5, однако она нарезает текст исключительно в картинки 320х240 и изменить это нельзя.

Foreigner
26-01-2015, 02:01
XXXp, nconvert может вставлять текст:

:: Новый файл new.jpg
nconvert -new 300 100 -o
:: Текст в одну строчку
nconvert -text "test test test" -text_color 0 0 0 -text_back 255 255 255 -text_flag center-left -text_font Consolas 10 -o test.jpg new.jpg

Для многострочного наверное надо рассчитывать позицию текста для каждой строки исходя из размера шрифта.

nconvert -help | more
nconvert -help > help.txt

Батник наверное написать не сложно. Но не сейчас.

Iska
26-01-2015, 04:29
XXXp, каким образом планируете указывать размер?

Посредством ImageMagic:
@echo off
setlocal enableextensions enabledelayedexpansion

set sSourceFile=%~1

if defined sSourceFile (
if exist "%sSourceFile%" (
set sDestFile=%~dpn1.jpg

"%ProgramFiles%\ImageMagick-6.8.0-Q16\convert.exe" ^
-background white ^
-fill blue ^
-font Arial ^
-pointsize 24 ^
-size 480x ^
-gravity Center ^
caption:"@%sSourceFile%" ^
"!sDestFile!"
) else (
echo Can't find source text file [%sSourceFile%].
exit /b 2
)
) else (
echo Usage: %~nx0 ^<Source text file^>
exit /b 1
)

endlocal
exit /b 0


Исходный файл указывается аргументом пакетного файла.
Исходный файл должен быть в кодировке UTF-8 без BOM, последняя строка не должна содержать символов завершения строки.
Ширина создаваемого изображения задаётся аргументом «-size» (в примере — 480 пикселей).

http://i.imgur.com/WZFDXti.jpg

XXXp
27-01-2015, 14:30
2Iska
Спасибо, я только не понял как указывать исходный файл, что значит "Исходный файл указывается аргументом пакетного файла"?

Iska
27-01-2015, 14:44
XXXp, можете просто перетащить в Проводнике искомый текстовый файл на пакетный файл/ярлык к пакетному файлу.

И что насчёт:
XXXp, каким образом планируете указывать размер? »
?

XXXp
27-01-2015, 14:49
2Iska

Так Вы же указали, в настройках скрипта 480 пикселей где стоит, тут и буду!

Спасибо!

Подскажите только, а как кроме перетаскивания можно указывать файл?

pzh2393
27-01-2015, 14:52
Можно так же попробовать воспользоваться готовыми утилитами:
http://explayt7.ucoz.ru/load/chtenie_teksta/txt_to_jpg/14-1-0-8

Или онлайн конвертерами:
http://www.txt2jpg.com
http://image.online-convert.com/ru/convert-to-jpg
http://online-convert.ru/convert_document_to_txt.html

XXXp
27-01-2015, 14:56
2pzh2393 спасибо
Готовую утилиту я приводил в стартовом посте, там есть проблема, что все изображения имеют размер 320х240
А онлайн не подойдет, мне 100 файлов за раз нужно делать, хотелось бы это реализовывать пакетно. Тем более, что вариант Iska очень хорошо работает и настраивается!

Iska
27-01-2015, 15:07
Так Вы же указали, в настройках скрипта 480 пикселей где стоит, тут и буду! »
Ясно. Раз устраивает, пусть так и остаётся.

Подскажите только, а как кроме перетаскивания можно указывать файл? »
В командной строке аргументом пакетного файла:
http://i.imgur.com/is9FRCX.png
Когда Вы делаете:
можете просто перетащить в Проводнике искомый текстовый файл на пакетный файл/ярлык к пакетному файлу. »
«за кадром» происходит то же самое.

100 файлов за раз нужно делать, хотелось бы это реализовывать пакетно. »
ширина изображений для всех 100 будет одинакова?

XXXp
27-01-2015, 15:32
ширина изображений для всех 100 будет одинакова? »
Да, ширину достаточно мне один раз задать, дальше по размеру текста уже только высота меняется

Спасибо!

Iska
27-01-2015, 16:16
Да, ширину достаточно мне один раз задать, дальше по размеру текста уже только высота меняется »
Ну тогда просто пишете ещё один пакетный файл, в котором будут 100 строк вида:
C:\Песочница\062\0001.cmd "C:\Песочница\062\Sample text1.txt"
C:\Песочница\062\0001.cmd "C:\Песочница\062\Sample text2.txt"
C:\Песочница\062\0001.cmd "C:\Песочница\062\Sample text3.txt"
и исполняете его. Если имена текстовых файлов подчиняются каким-то правилам или находятся в отдельной папке, то можно будет вместо 100 однотипных строк использовать получение имён файлов по «dir *.txt», последующий разбор по «for /f» и вызов.

XXXp
27-01-2015, 16:44
Ну тогда просто пишете ещё один пакетный файл, в котором будут 100 строк вида: »
А возможно сделать такой код, чтобы все подпапки для "C:\Песочница\" и соответственно все файлы тхт в этих подпапках обрабатывались? Чтобы картинки сохранялись в соответствующей папке с соответствующим названием?




© OSzone.net 2001-2012