Considero que el -annotateoperador de ImageMagick es un poco más conveniente que el -drawmétodo garethTheRed sugerido, por la sencilla razón de que no requiere modificación del archivo de entrada. No es tan poderoso como -draw, pero para el volcado total de los contenidos de un archivo de texto en una imagen, sirve muy bien.
convert -size 360x360 xc:white -font "FreeMono" -pointsize 12 -fill black \
-annotate +15+15 "@ascii.txt" image.png
generará una versión renderizada del contenido del archivo dado, pero sin tener que modificar su archivo "ascii.txt" para contener la text 15x15parte de-draw primitiva.
Especificación de argumentos
El argumento -fontpuede ser cualquier nombre de fuente compatible, si FreeMono no está disponible (o simplemente no se desea). Se puede obtener una lista de las fuentes disponibles para cualquier comando de ImageMagick utilizando el -listoperador, por convert -list fontlo que mostrará todos los argumentos posibles para -font.
Los argumentos para -annotate(hasta qué punto desplazar el texto representado desde el borde del lienzo) consisten en desplazamientos de píxeles horizontales y verticales (respectivamente). El primer desplazamiento (desplazamiento horizontal x) puede ser cualquier número entero positivo, pero no necesita ser mayor que unos pocos píxeles. El segundo desplazamiento (desplazamiento vertical y) debe ser al menos igual al tamaño de punto de la fuente elegida (el argumento para -pointsize), porque ImageMagick colocará la línea de base de la fuente en el desplazamiento dado. Entonces, si no desplaza la fuente hacia abajo al menos pointsizepíxeles, la parte superior de la primera línea se cortará.
Recomiendo ir al menos varios píxeles, por lo que si está utilizando -pointsize 64, debe emparejar eso con algo así -annotate +15+80. (No hay razón para aumentar el desplazamiento horizontal con tamaños de fuente más grandes, no tiene relación con las dimensiones del texto).
La necesidad de adivinar las dimensiones necesarias de la imagen de salida también puede ser tediosa. Por lo general, solo elijo valores excesivos, luego aprovecho los de ImageMagick -trimy -borderpara recortar automáticamente el resultado. El siguiente comando:
convert -size 1000x2000 xc:white -font "FreeMono" -pointsize 12 -fill black \
-annotate +15+15 "@ascii.txt" -trim -bordercolor "#FFF" -border 10 +repage image.png
se renderizará en un cuadro de 1000x2000, luego recortará el exceso de espacio en blanco a excepción de un borde de 10 píxeles alrededor del texto. Al +repagefinal evita que el PNG de salida se cree con un desplazamiento de imagen, lo que de otro modo haría que GIMP muestre un cuadro de diálogo sobre la carga preguntando si debe aplicar el desplazamiento.
(Obviamente, 1000x2000 es excesivo para archivos de texto pequeños, y para archivos más largos, al menos la dimensión vertical puede necesitar ser aumentada. Sin embargo, es más simple sobreestimar, ya que el único costo es convertconsumir un poco más de CPU y memoria durante el procesamiento).
Entrada de preprocesamiento
Si su archivo de texto no está formateado de la manera que necesita para renderizarlo (por ejemplo, si usa líneas muy largas), es posible que tenga que volver a formatearlo antes de entregárselo convert. ImageMagick no ajustará el texto, por lo que cada línea de texto se extenderá horizontalmente en toda su longitud. Afortunadamente, es posible ejecutar el archivo a través de cualquier formateador de línea de comandos que desee, luego canalizar el texto procesado en convertlugar de leerlo directamente desde el archivo:
fmt < ascii.txt | convert -size 1000x2000 xc:white -font "DejaVu-Sans-Condensed" \
-pointsize 24 -fill black -annotate +15+30 "@-" -trim -bordercolor "#FFF" \
-border 10 +repage image.png
Eso representará el contenido de ascii.txtDejaVu Sans Condensed de 24 puntos, después de que haya sido procesado por el fmtcomando, que en su modo de operación predeterminado reformateará su entrada mediante el ajuste de palabras a un ancho de 75 columnas. (A menos que haya cadenas largas y continuas de más de 75 caracteres, como las URL, en cuyo caso se extenderán).
Una vez que fmtha reformateado el texto, se convertpasará a él y luego se generará la fmtsalida canalizada , como si estuviera leyendo el archivo directamente. (Especificar un nombre de archivo de -es una abreviatura de shell de UNIX bastante común para "leer desde la entrada estándar, en lugar de cualquier archivo de disco con nombre", y las herramientas de ImageMagick siguen esa convención).