rectangle library imagedraw python text fonts python-imaging-library draw

python - library - Dibuja texto en negrita/cursiva con PIL?



python draw rectangle (4)

Cómo dibujar texto en negrita / cursiva con PIL? ImageFont.truetype (archivo, tamaño) tiene una opción para especificar solo el tamaño de fuente.


Muchas fuentes utilizan diferentes archivos TTF para sus versiones en negrita / cursiva, así que me imagino que si solo especifica ese archivo, funcionaría.


Use la versión negrita / cursiva de la fuente


Bueno, este es mi primer comentario. Aquí vamos.

Trataré de aclarar el procedimiento. Al principio Lo que hice fue usar el "nombre" de la fuente como este

font = ImageFont.truetype("C:/Windows/Fonts//Arial Negrita.ttf",25)

pero solo obtuve algunos errores como este:

Traceback (most recent call last): File "C:/Users/555STi/PycharmProjects/PIL/img.py", line 8, in <module> font = ImageFont.truetype("C:/Windows/Fonts/Arial negrita.ttf",25) File "C:/Python27/lib/site-packages/PIL/ImageFont.py", line 262, in truetype return FreeTypeFont(font, size, index, encoding) File "C:/Python27/lib/site-packages/PIL/ImageFont.py", line 142, in __init__ self.font = core.getfont(font, size, index, encoding) IOError: cannot open resource

Entonces recordé que a veces las fuentes tienen otros "nombres" o "nombres de archivo", así que, lo que hice fue ir a la carpeta de fuentes, luego abrí la fuente Arial que mostraba todos los estilos como negrita (negrita), cursiva (cursiva), etc.

Hizo clic derecho en el estilo "negrita", seleccionó "propiedades" y luego apareció el "nombre real" de la fuente.

En mi caso, el nombre era "ariblk"

Entonces, finalmente, solo usé el nombre así.

font = ImageFont.truetype("C:/Windows/Fonts//ariblk.ttf",25)

Sé que esta publicación es antigua, pero hoy me ayudó a llegar a la solución. Así que espero ayudar a cualquiera.

=)


Una solución bastante atrevida para hacer que una fuente sea negrita si (por alguna razón) no tiene una versión en negrita separada de la fuente es imprimir el mismo texto varias veces con un ligero desplazamiento.

andaleMono = ImageFont.truetype(ANDALE_MONO_PATH,16) text = "hello world" mainOffset = (50,50) xoff, yoff = mainOffset draw.text(mainOffset,text,font=andaleMono,fill=''black'') draw.text((xoff+1,yoff+1),text,font=andaleMono,fill=''black'') draw.text((xoff-1,yoff-1),text,font=andaleMono,fill=''black'')