que utilizan los dos métodos siguientes texto de la imagen de vista previa para generar un archivo de fuentes .ttfImageFont's getsize() no obtiene el tamaño de texto correcto?
método PIL:
def make_preview(text, fontfile, imagefile, fontsize=30):
try:
font = ImageFont.truetype(fontfile, fontsize)
text_width, text_height = font.getsize(text)
img = Image.new('RGBA', (text_width, text_height))
draw = ImageDraw.Draw(img)
draw.text((0, 0), text, font=font, fill=(0, 0, 0))
return True
except:
return False
ImageMagick método:
def make_preview(text, fontfile, imagefile, fontsize=30):
p = subprocess.Popen(['convert', '-font', fontfile, '-background',
'transparent', '-gravity', 'center', '-pointsize', str(fontsize),
'-trim', '+repage', 'label:%s' % text, image_file])
return p==0
Ambos métodos cree imágenes de vista previa correctas la mayor parte del tiempo, pero en algunos casos raros (< 2%), el font.getsize (texto) simplemente cann para obtener el tamaño de texto correcto que da como resultado un texto desbordado proporcionado lienzo. ImageMagick tiene el mismo problema.
fuentes de muestra y las previsualizaciones:
HANFORD.TTF http://download.appfile.com/HANFORD.png
NEWTOW.TTF http://download.appfile.com/NEWTOW.png
MILF.TTF http://download.appfile.com/MILF.png
SWANSE.TTF http://download.appfile.com/SWANSE.png
He mirado en la documentación de ImageMagick y encontró la explicación de este problema en http://www.imagemagick.org/Usage/text/#overflow.
¿Es posible detectar dichos desbordamientos de texto y dibujar texto para que se ajuste al lienzo como esperábamos?
@Pekka, el método puede obras con IM pero creará grandes gastos generales, no sólo el recorte, sino también cambiar el tamaño de la imagen recortada para encajar en lienzo dimensión especificada. Esto no funciona con PIL. Siempre dibuja la mitad superior de las fuentes anteriores, incluso yo creo un lienzo más grande. – jack
Trate de poner el comando "etiqueta" * antes de * los comandos de recorte y reparación, eso debería funcionar. La sobrecarga, no puedo ayudar. –