Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   txt to jpg (http://forum.oszone.net/showthread.php?t=294465)

XXXp 26-01-2015 01:13 2461330

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

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

Foreigner 26-01-2015 02:01 2461348

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 2461372

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 пикселей).
Возможный результат

XXXp 27-01-2015 14:30 2462154

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

Iska 27-01-2015 14:44 2462163

XXXp, можете просто перетащить в Проводнике искомый текстовый файл на пакетный файл/ярлык к пакетному файлу.

И что насчёт:
Цитата:

Цитата Iska
XXXp, каким образом планируете указывать размер? »

?

XXXp 27-01-2015 14:49 2462170

2Iska

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

Спасибо!

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

pzh2393 27-01-2015 14:52 2462175

Можно так же попробовать воспользоваться готовыми утилитами:
http://explayt7.ucoz.ru/load/chtenie...o_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 2462178

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

Iska 27-01-2015 15:07 2462183

Цитата:

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

Ясно. Раз устраивает, пусть так и остаётся.

Цитата:

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

В командной строке аргументом пакетного файла:
Скрытый текст

Когда Вы делаете:
Цитата:

Цитата Iska
можете просто перетащить в Проводнике искомый текстовый файл на пакетный файл/ярлык к пакетному файлу. »

«за кадром» происходит то же самое.

Цитата:

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

ширина изображений для всех 100 будет одинакова?

XXXp 27-01-2015 15:32 2462192

Цитата:

Цитата Iska
ширина изображений для всех 100 будет одинакова? »

Да, ширину достаточно мне один раз задать, дальше по размеру текста уже только высота меняется

Спасибо!

Iska 27-01-2015 16:16 2462214

Цитата:

Цитата XXXp
Да, ширину достаточно мне один раз задать, дальше по размеру текста уже только высота меняется »

Ну тогда просто пишете ещё один пакетный файл, в котором будут 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 2462225

Цитата:

Цитата Iska
Ну тогда просто пишете ещё один пакетный файл, в котором будут 100 строк вида: »

А возможно сделать такой код, чтобы все подпапки для "C:\Песочница\" и соответственно все файлы тхт в этих подпапках обрабатывались? Чтобы картинки сохранялись в соответствующей папке с соответствующим названием?


Время: 20:31.

Время: 20:31.
© OSzone.net 2001-