2010-02-10 3 views

답변

2

PIL 글꼴에는 글꼴의 너비와 높이를 가져올 수있는 getsize 메서드가 있습니다. 시도해 보셨습니까? 예 :

from PIL import Image, ImageDraw, ImageFont 

fontFile = "/usr/share/fonts/truetype/freefont/FreeSansBold.ttf" 
font = ImageFont.truetype(fontFile, 10) 
text="anurag" 
print font.getsize(text) 
assert font.getsize(text)[0]*2 == font.getsize(text*2)[0] 
당신은 당신이 바로 이미지를 만드는 대신 루틴을 직접 구현하지만, 코드가 너무 페이지에 포함되어 해당 페이지를 사용할 수 http://tools.jedutils.com/tools/center-text-image

에서 이것의 구현을 찾을 수

2

. 니콜의 조언에 따라

from PIL import Image, ImageDraw, ImageFont, ImageFilter 
import StringIO 

filter_dict = { 
    'BLUR' : ImageFilter.BLUR, 
    'CONTOUR' : ImageFilter.CONTOUR, 
    'DETAIL' : ImageFilter.DETAIL, 
    'EDGE_ENHANCE' : ImageFilter.EDGE_ENHANCE, 
    'EDGE_ENHANCE_MORE' : ImageFilter.EDGE_ENHANCE_MORE, 
    'EMBOSS' : ImageFilter.EMBOSS, 
    'FIND_EDGES' : ImageFilter.FIND_EDGES, 
    'SMOOTH' : ImageFilter.SMOOTH, 
    'SMOOTH_MORE' : ImageFilter.SMOOTH_MORE, 
    'SHARPEN' : ImageFilter.SHARPEN 
} 

def get_font_full_path(font_path,font_name): 
    ext = '.TTF' if font_name.upper() == font_name else ".ttf" 
    return font_path + font_name + ext 

def create_image(font_name, font_size, font_color, width, height, back_ground_color, text, img_type="JPEG", image_filter=None): 
    font_full_path = get_font_full_path(font_path,font_name) 
    font = ImageFont.truetype (font_full_path, font_size) 

    im = Image.new ("RGB", (width,height), back_ground_color) 
    draw = ImageDraw.Draw (im) 
    text_x, text_y = font.getsize(text) 
    x = (width - text_x)/2 
    y = (height - text_y)/2 
    draw.text ((x,y), text, font=font, fill=font_color) 

    if image_filter: 
     real_filter = filter_dict[image_filter] 
     im = im.filter(real_filter) 
    im.save ("sample.jpg", format=img_type) 

`

+0

또한 경우에 구현 당신이에 연결 한 웹 사이트를 요약하는 것이 도움이 내려갑니다. –

관련 문제