워터마크 이미지를 디자이너로부터 전달받고, 제품이미지에 오버라이딩하는 방식이 내가 정의하는 이미지 기반의 워터마크
다.
반면에, 텍스트 기반 워터마크
는 아래와 같다.
예를 들어 text="This is a watermark that I made" 라고
text 변수에 문자열을 선언한다.
그리고 text를 기반으로 Image 객체를 생성하는 것이다.
아래와 같이 말이다.
watermark = Image.new('RGBA', (mark_width, mark_height), 0)
가장 우측의 0
은 opacity를 의미한다. 즉, 워터마크의 배경을 투명하게 하겠다는 의미다.
아래 전체 코드를 업로드했다.
from PIL import Image, ImageDraw, ImageFont
img = Image.open("9259014.jpg")
width, height = img.size
text_to_be_rotated = "This is a watermark text"
font = ImageFont.truetype("~/fonts/Monofur/Monofur for Powerline.ttf", 44)
mark_width, mark_height = font.getsize(text_to_be_rotated)
watermark = Image.new('RGBA', (mark_width, mark_height), 0)
draw = ImageDraw.Draw(watermark)
draw.text((0, 0), text=text_to_be_rotated, font=font, fill=(200, 0, 0, 100))
watermark = watermark.rotate(45, expand=1)
# merge
wx, wy = watermark.size
px = int((width - wx)/2)
py = int((height - wy)/2)
img.paste(watermark, (px, py, px + wx, py + wy), watermark)
img.show()