CodeGym /Các khóa học /Python SELF VI /Vẽ: văn bản, đường kẻ và watermark

Vẽ: văn bản, đường kẻ và watermark

Python SELF VI
Mức độ , Bài học
Có sẵn

1. Thêm văn bản vào hình ảnh

Để thêm văn bản vào hình ảnh trong Pillow, ta sử dụng module ImageDraw, cung cấp method text() để hiển thị văn bản tại tọa độ xác định.

Thêm văn bản đơn giản

                
from PIL import ImageDraw, ImageFont

# Tạo đối tượng để vẽ
draw = ImageDraw.Draw(image)

# Thêm văn bản vào hình ảnh
text = "Ví dụ văn bản"
draw.text((50, 50), text, fill="white")

# Lưu hình ảnh có văn bản
image.save("text_example.jpg")
                
            

Trong ví dụ này, văn bản "Ví dụ văn bản" được thêm tại tọa độ (50, 50). Tham số fill chỉ định màu văn bản, có thể được đặt là chuỗi ("white", "black") hoặc ở định dạng RGB ((255, 255, 255)).

Tùy chỉnh font chữ

Mặc định Pillow sử dụng font tiêu chuẩn. Để chọn font khác và chỉnh kích cỡ, dùng ImageFont.truetype(). Đảm bảo file font có sẵn trên hệ thống của bạn.

                
# Tải font
font = ImageFont.truetype("arial.ttf", 36)

# Thêm văn bản với font tùy chỉnh
draw.text((50, 100), text, font=font, fill="yellow")
image.save("text_custom_font_example.jpg")
                
            

Ở đây, chúng ta dùng font arial.ttf với kích cỡ 36 pixel. Nếu không có font mong muốn, bạn có thể tải xuống và chỉ định đường dẫn đến file.

2. Thêm watermark

Watermark là văn bản hoặc hình ảnh bán trong suốt được phủ lên ảnh để bảo vệ khỏi sao chép. Bạn có thể dùng nó để thêm logo hoặc thông tin tác giả. Pillow cho phép tạo watermark văn bản đơn giản.

Watermark văn bản

                
# Tạo đối tượng để vẽ
draw = ImageDraw.Draw(image)

# Văn bản và font cho watermark
watermark_text = "© 2023 My Company"
font = ImageFont.truetype("arial.ttf", 24)

# Xác định tọa độ để đặt watermark
width, height = image.size
text_width, text_height = draw.textsize(watermark_text, font=font)
x = width - text_width - 10
y = height - text_height - 10

# Thêm watermark ở góc dưới cùng bên phải
draw.text((x, y), watermark_text, font=font, fill=(255, 255, 255, 128))
image.save("watermarked_example.jpg")
                
            

Trong ví dụ này, watermark văn bản được thêm vào góc dưới cùng bên phải hình ảnh. Chúng ta tính toán xy sao cho watermark hơi lệch khỏi viền hình ảnh.

3. Thêm các phần tử đồ họa

Ngoài văn bản, Pillow còn cho phép vẽ các phần tử đồ họa cơ bản như đường kẻ, hình chữ nhật, hình tròn và hình elip. Điều này hữu ích trong việc tạo khung, đánh dấu vùng và thêm hình học.

Vẽ đường kẻ

Để vẽ đường kẻ, sử dụng method line(), nhận tọa độ điểm đầu và điểm cuối của đường.

                
# Vẽ đường kẻ từ góc trên bên trái đến góc dưới bên phải
draw.line((0, 0, width, height), fill="red", width=5)
image.save("line_example.jpg")
                
            

Đoạn mã này vẽ một đường màu đỏ chạy chéo từ góc trên bên trái đến góc dưới cùng bên phải hình ảnh.

Vẽ hình chữ nhật

Hình chữ nhật được vẽ bằng method rectangle(), nhận tọa độ của góc trên bên trái và góc dưới bên phải.

                
# Vẽ hình chữ nhật
draw.rectangle((50, 50, 200, 200), outline="blue", width=3)
image.save("rectangle_example.jpg")
                
            

Ở đây chúng ta tạo một hình chữ nhật với đường viền màu xanh dương và độ dày đường kẻ là 3 pixel. Bạn cũng có thể sử dụng tham số fill để tô màu bên trong hình chữ nhật.

Vẽ hình tròn và elip

Method ellipse() cho phép vẽ hình tròn và elip. Để vẽ hình tròn, chỉ cần chỉ định kích thước chiều rộng và chiều cao giống nhau.

                
# Vẽ hình tròn
draw.ellipse((150, 150, 250, 250), outline="green", width=4)
image.save("circle_example.jpg")
                
            

Trong ví dụ này, một hình tròn được tạo với tâm tại điểm (200, 200). Nếu đặt các kích thước chiều rộng và chiều cao khác nhau, kết quả sẽ là một hình elip.

Vẽ đa giác

Để vẽ đa giác, sử dụng method polygon(), nhận tọa độ các đỉnh của hình.

                
# Vẽ tam giác
draw.polygon([(100, 100), (150, 50), (200, 100)], outline="purple", fill="orange")
image.save("polygon_example.jpg")
                
            

Đoạn mã này vẽ một tam giác với màu tô bên trong là cam và viền màu tím. Bạn có thể tạo hình dạng bất kỳ bằng cách truyền tọa độ các đỉnh của nó.

4. Ví dụ

Ví dụ tạo bố cục với văn bản và đồ họa

Kết hợp tất cả các nội dung ở trên và tạo hình ảnh với văn bản, watermark và các phần tử đồ họa.

                
from PIL import Image, ImageDraw, ImageFont

# Tải hình ảnh
image = Image.open("example.jpg")
draw = ImageDraw.Draw(image)

# Thêm văn bản
font = ImageFont.truetype("arial.ttf", 36)
draw.text((50, 50), "Demo Text", font=font, fill="yellow")

# Thêm watermark ở góc dưới cùng bên phải
watermark_text = "© 2023 My Company"
font_watermark = ImageFont.truetype("arial.ttf", 24)
width, height = image.size
text_width, text_height = draw.textsize(watermark_text, font=font_watermark)
x = width - text_width - 10
y = height - text_height - 10
draw.text((x, y), watermark_text, font=font_watermark, fill=(255, 255, 255, 128))

# Vẽ đường kẻ, hình chữ nhật và hình tròn
draw.line((0, 0, width, height), fill="red", width=5)
draw.rectangle((50, 50, 200, 200), outline="blue", width=3)
draw.ellipse((150, 150, 250, 250), outline="green", width=4)

# Lưu kết quả
image.save("final_composition_example.jpg")
                
            

Ví dụ này tạo một hình ảnh với văn bản, watermark và một số phần tử đồ họa (đường kẻ, hình chữ nhật và hình tròn). Các bố cục này có thể được sử dụng cho bài thuyết trình, blog và tạo hình ảnh trang trí chuyên nghiệp.

Ứng dụng thực tiễn

  • Đánh dấu và bảo vệ hình ảnh: Watermark giúp bảo vệ hình ảnh khỏi sử dụng trái phép, còn văn bản cho phép thêm thông tin về tác giả hoặc công ty.
  • Chuẩn bị hình ảnh cho mạng xã hội: Thêm văn bản và đồ họa giúp chuẩn bị hình ảnh để đăng, với các thông tin bổ sung.
  • Đồ họa thông tin và minh họa dữ liệu: Sử dụng các phần tử đồ họa như đường kẻ và hình dạng, giúp tạo biểu đồ đơn giản và minh họa, khiến Pillow hữu ích cho việc tạo thông tin đồ họa.
Bình luận
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION