문제

다음 코드를 고려하십시오 : Pil Import Image, ImageDraw, ImageFont에서

def addText(img, lTxt):
    FONT_SIZE = 10
    INTERLINE_DISTANCE = FONT_SIZE + 1
    font = ImageFont.truetype('arial.ttf', FONT_SIZE)
    lTxtImageHeight = INTERLINE_DISTANCE * len(lTxt)
    # create text image 
    lTxtImg = Image.new('RGBA', (img.size[1], lTxtImageHeight), 255)
    lTxtImgDraw = ImageDraw.Draw(lTxtImg, )
    for (i, line) in enumerate(lTxt):
      lTxtImgDraw.text((5, i * INTERLINE_DISTANCE), line, font=font, fill='#000000')
    # rotate text image
    lTxtImg = lTxtImg.rotate(90)
    # create new transparent image ret
    ret = Image.new('RGBA', (img.size[0] + lTxtImageHeight, img.size[1]), 255)
    # paste the image to ret
    ret.paste(img, (0,0))
    # paste the text to ret
    ret.paste(lTxtImg, (img.size[0], 0), lTxtImg)
    return ret

img = Image.open('in.png')
addText(img, ['lorem', 'ipsum', 'dolores']).save('out.png')

입력 및 출력 파일은 다음과 같습니다 이것이 입력입니다

입력 http://img16.imageshack.us/img16/8229/73936270.png

그리고 이것은 출력입니다

출력 http://img94.imageshack.us/img94/531/outj.png

보시다시피, 출력 이미지에는 텍스트 주위에 많은 붉은 소음이 포함되어 있습니다. 이 디더링을 어떻게 제거 할 수 있습니까?

도움이 되었습니까?

해결책

인공물이 처음 나타나는 위치를 분리하기 위해 중간 텍스트 이미지를 파일 (텍스트, 회전 된 텍스트)에 작성하는 것이 좋습니다.

또 다른 가능성은 PNG 인코딩이 그레이 스케일 값이없는 팔레트를 사용하는 것일 수 있으므로 그 빨간색이 가장 가까운 것입니다. 그래도 Imageshack에서 파일의 인코딩을 확인했는데 괜찮아 보였으므로 이것이 문제라고 생각하지 않습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top