Hướng dẫn add text to image python - thêm văn bản vào hình ảnh python

Tôi có một ứng dụng tải một hình ảnh và khi người dùng nhấp vào nó, một vùng văn bản xuất hiện cho hình ảnh này [sử dụng

var count = 0;
$['textarea'].autogrow[];
$['img'].click[function[]{
    count = count + 1;
    if [count > 1]{
        $[this].after[''];
        $['textarea'].focus[];
    }   
}];
3], trong đó người dùng có thể viết một số văn bản trên hình ảnh. Mà nên được thêm vào trên hình ảnh.

Sau khi thực hiện một số nghiên cứu về nó, tôi đã hình dung rằng

var count = 0;
$['textarea'].autogrow[];
$['img'].click[function[]{
    count = count + 1;
    if [count > 1]{
        $[this].after[''];
        $['textarea'].focus[];
    }   
}];
4 [Thư viện hình ảnh Python] có thể giúp tôi làm điều này. Vì vậy, tôi đã thử một vài ví dụ để xem nó hoạt động như thế nào và tôi đã xoay sở để viết văn bản trên một hình ảnh. Nhưng tôi nghĩ rằng có một số khác biệt khi tôi thử nó bằng cách sử dụng
var count = 0;
$['textarea'].autogrow[];
$['img'].click[function[]{
    count = count + 1;
    if [count > 1]{
        $[this].after[''];
        $['textarea'].focus[];
    }   
}];
5 và trong môi trường web. Ý tôi là văn bản trên Textarea rất lớn trong PX. Làm thế nào tôi có thể đạt được cùng kích thước của văn bản khi sử dụng PIL như một trong Textarea?

Các văn bản là đa dòng. Làm thế nào tôi có thể làm cho nó đa dòng trong hình ảnh, sử dụng

var count = 0;
$['textarea'].autogrow[];
$['img'].click[function[]{
    count = count + 1;
    if [count > 1]{
        $[this].after[''];
        $['textarea'].focus[];
    }   
}];
4?

Có cách nào tốt hơn là sử dụng PIL không? Tôi không hoàn toàn chắc chắn, nếu đây là triển khai tốt nhất.

html:


nó là hình ảnh đang được chỉnh sửa

var count = 0;
$['textarea'].autogrow[];
$['img'].click[function[]{
    count = count + 1;
    if [count > 1]{
        $[this].after[''];
        $['textarea'].focus[];
    }   
}];

JQuery để thêm Textarea. Ngoài ra khu vực văn bản là vị trí: kích thước tuyệt đối và cố định.

Tôi có nên đặt nó bên trong một biểu mẫu để tôi có thể có được tọa độ của textarea trên hình ảnh không? Tôi muốn viết văn bản trên hình ảnh khi người dùng nhấp và lưu nó trên hình ảnh.

Đã hỏi ngày 4 tháng 5 năm 2013 lúc 10:44May 4, 2013 at 10:44

ApostolosapostolosApostolos

7.50516 Huy hiệu vàng76 Huy hiệu bạc142 Huy hiệu Đồng16 gold badges76 silver badges142 bronze badges

5

Tôi nghĩ rằng mô -đun ImageFont có sẵn trong

var count = 0;
$['textarea'].autogrow[];
$['img'].click[function[]{
    count = count + 1;
    if [count > 1]{
        $[this].after[''];
        $['textarea'].focus[];
    }   
}];
4 sẽ hữu ích trong việc giải quyết vấn đề kích thước phông chữ văn bản. Chỉ cần kiểm tra loại phông chữ và kích thước nào phù hợp với bạn và sử dụng hàm sau để thay đổi giá trị phông chữ.

# font = ImageFont.truetype[, ]
# font-file should be present in provided path.
font = ImageFont.truetype["sans-serif.ttf", 16]

Vì vậy, mã của bạn sẽ trông giống như:

from PIL import Image
from PIL import ImageFont
from PIL import ImageDraw 

img = Image.open["sample_in.jpg"]
draw = ImageDraw.Draw[img]
# font = ImageFont.truetype[, ]
font = ImageFont.truetype["sans-serif.ttf", 16]
# draw.text[[x, y],"Sample Text",[r,g,b]]
draw.text[[0, 0],"Sample Text",[255,255,255],font=font]
img.save['sample-out.jpg']

Bạn có thể cần phải nỗ lực thêm một số nỗ lực để tính toán kích thước phông chữ. Trong trường hợp bạn muốn thay đổi nó dựa trên số lượng người dùng văn bản đã cung cấp trong

var count = 0;
$['textarea'].autogrow[];
$['img'].click[function[]{
    count = count + 1;
    if [count > 1]{
        $[this].after[''];
        $['textarea'].focus[];
    }   
}];
8.

Để thêm gói văn bản [điều đa dòng] chỉ cần lấy ý tưởng sơ bộ về số lượng ký tự có thể đi theo một dòng, thì có lẽ bạn có thể viết một chức năng xử lý trước cho văn bản của bạn, về cơ bản tìm thấy ký tự sẽ là lần cuối cùng trong mỗi dòng và Chuyển đổi không gian trắng trước nhân vật này thành dòng mới.

Alxwrd

2.21017 Huy hiệu bạc28 Huy hiệu đồng17 silver badges28 bronze badges

Đã trả lời ngày 4 tháng 5 năm 2013 lúc 17:49May 4, 2013 at 17:49

9

Thậm chí ví dụ tối thiểu hơn [vẽ "Hello World!" In Black và với phông chữ mặc định ở phía trên bên trái của hình ảnh]:

...
from PIL import ImageDraw
...
ImageDraw.Draw[
    image  # Image
].text[
    [0, 0],  # Coordinates
    'Hello world!',  # Text
    [0, 0, 0]  # Color
]

Đã trả lời ngày 29 tháng 7 năm 2018 lúc 4:07Jul 29, 2018 at 4:07

Solomon Uckosolomon UckoSolomon Ucko

4.4132 Huy hiệu vàng22 Huy hiệu bạc42 Huy hiệu đồng2 gold badges22 silver badges42 bronze badges

4

Bạn có thể tạo một thư mục "phông chữ" trong một gốc của dự án của bạn và đặt tệp phông chữ của bạn [sans_serif.ttf] ở đó. Sau đó, bạn có thể làm một cái gì đó như thế này:

fonts_path = os.path.join[os.path.dirname[os.path.dirname[__file__]], 'fonts']
font = ImageFont.truetype[os.path.join[fonts_path, 'sans_serif.ttf'], 24]

Đã trả lời ngày 20 tháng 7 năm 2014 lúc 4:23Jul 20, 2014 at 4:23

SVPPSVPPsvpp

Phim huy hiệu bạc 18111 silver badge3 bronze badges

Đầu tiên, bạn phải tải xuống một loại phông chữ ... ví dụ: //www.wfonts.com/font/microsoft-sans-serif.

Sau đó, sử dụng mã này để vẽ văn bản:

from PIL import Image
from PIL import ImageFont
from PIL import ImageDraw 
img = Image.open["filename.jpg"]
draw = ImageDraw.Draw[img]
font = ImageFont.truetype[r'filepath\..\sans-serif.ttf', 16]
draw.text[[0, 0],"Draw This Text",[0,0,0],font=font] # this will draw text with Blackcolor and 16 size

img.save['sample-out.jpg']

Đã trả lời ngày 19 tháng 2 năm 2019 lúc 5:12Feb 19, 2019 at 5:12

Kumar Skumar sKumar S

3894 Huy hiệu bạc9 Huy hiệu Đồng4 silver badges9 bronze badges

Cài đặt gối đầu tiên

pip install pillow

Thí dụ

from PIL import Image, ImageDraw, ImageFont

image = Image.open['Focal.png']
width, height = image.size 

draw = ImageDraw.Draw[image]

text = '//devnote.in'
textwidth, textheight = draw.textsize[text]

margin = 10
x = width - textwidth - margin
y = height - textheight - margin

draw.text[[x, y], text]

image.save['devnote.png']

# optional parameters like optimize and quality
image.save['optimized.png', optimize=True, quality=50]

Đã trả lời ngày 4 tháng 12 năm 2020 lúc 7:11Dec 4, 2020 at 7:11

Fefar Ravifefar RaviFefar Ravi

6887 Huy hiệu bạc17 Huy hiệu đồng7 silver badges17 bronze badges

Một điều không được đề cập trong các câu trả lời khác là kiểm tra kích thước văn bản. Nó thường là cần thiết để đảm bảo văn bản phù hợp với hình ảnh [ví dụ: rút ngắn văn bản nếu quá khổ] hoặc để xác định vị trí để vẽ văn bản [ví dụ: trung tâm văn bản được căn chỉnh]. Gối/PIL cung cấp hai phương pháp để kiểm tra kích thước văn bản, một thông qua ImageFont và một phương pháp thông qua ImageDraw. Như được hiển thị bên dưới, phông chữ không xử lý nhiều thứ được lót, trong khi FenseDraw có.

In [28]: im = Image.new[mode='RGB',size=[240,240]]                                                            
In [29]: font = ImageFont.truetype['arial']
In [30]: draw = ImageDraw.Draw[im]
In [31]: t1 = 'hello world!'
In [32]: t2 = 'hello \nworld!'
In [33]: font.getsize[t1], font.getsize[t2] # the height is the same
Out[33]: [[52, 10], [60, 10]] 
In [35]: draw.textsize[t1, font], draw.textsize[t2, font]  # handles multi-lined text
Out[35]: [[52, 10], [27, 24]] 

Đã trả lời ngày 15 tháng 8 năm 2019 lúc 19:22Aug 15, 2019 at 19:22

Langelangelange

5405 Huy hiệu bạc9 Huy hiệu Đồng5 silver badges9 bronze badges

1

Với gối, bạn cũng có thể vẽ trên một hình ảnh bằng mô -đun hình ảnh. Bạn có thể vẽ các đường, điểm, hình elip, hình chữ nhật, vòng cung, bitmap, hợp âm, bánh pieslices, đa giác, hình dạng và văn bản.

var count = 0;
$['textarea'].autogrow[];
$['img'].click[function[]{
    count = count + 1;
    if [count > 1]{
        $[this].after[''];
        $['textarea'].focus[];
    }   
}];
0

Chúng tôi tạo một đối tượng hình ảnh với phương thức mới []. Điều này trả về một đối tượng hình ảnh không có hình ảnh được tải. Sau đó chúng tôi thêm một hình chữ nhật và một số văn bản vào hình ảnh trước khi lưu nó.

Đã trả lời ngày 21 tháng 2 năm 2019 lúc 5:01Feb 21, 2019 at 5:01

Gần đây tôi đã phải thực hiện điều tương tự. Tôi đã tạo một gói trên pypi có thể có ích: pynter

Bạn có thể thêm văn bản vào hình ảnh với các bước này:

  1. Tải xuống hình ảnh:

    var count = 0;
    $['textarea'].autogrow[];
    $['img'].click[function[]{
        count = count + 1;
        if [count > 1]{
            $[this].after[''];
            $['textarea'].focus[];
        }   
    }];
    
    9

  2. Tải xuống phông chữ:

    # font = ImageFont.truetype[, ]
    # font-file should be present in provided path.
    font = ImageFont.truetype["sans-serif.ttf", 16]
    
    0

  3. # font = ImageFont.truetype[, ]
    # font-file should be present in provided path.
    font = ImageFont.truetype["sans-serif.ttf", 16]
    
    1

var count = 0;
$['textarea'].autogrow[];
$['img'].click[function[]{
    count = count + 1;
    if [count > 1]{
        $[this].after[''];
        $['textarea'].focus[];
    }   
}];
1

Đây sẽ là kết quả:

Đã trả lời ngày 22 tháng 5 năm 2021 lúc 11:36May 22, 2021 at 11:36

Bạn có thể làm với Python bằng mô -đun gối hoặc PIL. Tìm hiểu làm thế nào

Đã trả lời ngày 4 tháng 11 lúc 16:58Nov 4 at 16:58

2

Để thêm văn bản vào tệp hình ảnh, chỉ cần sao chép/dán mã bên dưới

var count = 0;
$['textarea'].autogrow[];
$['img'].click[function[]{
    count = count + 1;
    if [count > 1]{
        $[this].after[''];
        $['textarea'].focus[];
    }   
}];
2

Arienrhod

2.3711 huy hiệu vàng9 Huy hiệu bạc17 Huy hiệu đồng1 gold badge9 silver badges17 bronze badges

Đã trả lời ngày 4 tháng 9 năm 2019 lúc 9:54Sep 4, 2019 at 9:54

Chúng ta có thể thêm văn bản vào hình ảnh không?

Thêm văn bản vào ảnh trên Android bằng Google Photos ở dưới cùng của ảnh, nhấn Chỉnh sửa [ba dòng ngang]. Nhấn vào biểu tượng đánh dấu [dòng squiggly]. Bạn cũng có thể chọn màu của văn bản từ màn hình này. Nhấn vào công cụ văn bản và nhập văn bản mong muốn của bạn.At the bottom of the photo, tap Edit [three horizontal lines]. Tap the Markup icon [squiggly line]. You can also select the color of text from this screen. Tap the Text tool and enter your desired text.

Pil Tkinter là gì?

Tkinter dựa vào gói Python Gối [còn gọi là PIL] cho khả năng xử lý hình ảnh.Sử dụng Gối, chức năng Tkinter hiển thị thông báo dựa trên văn bản thay vào đó có thể hiển thị một thông báo dựa trên hình ảnh.Lưu ý rằng tùy thuộc vào mục đích của hình ảnh trong ứng dụng Tkinter, có thể yêu cầu mã hóa khác nhau.a Tkinter function that displays a text-based message can instead display an image-based message. Note that depending on the purpose of an image in a Tkinter application, different coding may be required.

Bạn có thể mã hóa hình ảnh trong Python không?

Thư viện hình ảnh Python [PIL] là gói Python của bên thứ 3, thêm khả năng xử lý hình ảnh cho trình thông dịch Python của bạn.Nó cho phép bạn xử lý ảnh và thực hiện nhiều thao tác tệp hình ảnh phổ biến.. It allows you to process photos and do many common image file manipulations.

Python có thể đọc văn bản từ hình ảnh không?

Thư viện Python Python-Tesseract là một công cụ nhận dạng ký tự quang học [OCR] cho Python.Đó là, nó sẽ nhận ra và đọc văn bản được nhúng trong hình ảnh.Python-tesseract is an optical character recognition [OCR] tool for python. That is, it will recognize and “read” the text embedded in images.

Bài Viết Liên Quan

Chủ Đề