2011-11-16 9 views
8

मुझे पायथन में एक पीएनजी छवि पर कुछ पाठ डालना होगा, मुझे पहले एक और छवि को भी पहले रखना होगा।मैं एक छवि पर पाठ कैसे लिख सकता हूं, और पाइथन में उस पर एक और छवि ओवरले कर सकता हूं?

तो मेरे पास मूल छवि (प्रत्येक छवि के लिए समान) के लिए एक ही लोगो होगा, ऊपरी बाएं कोने में इसे रखने के लिए एक लोगो, और पूरे छवि पर एक टेक्स्ट (गैर-विशिष्ट फ़ॉन्ट, मुझे बस इसकी आवश्यकता है फ़ॉन्ट आकार सेट करें)।

क्या मैं पीआईएल, या दूसरी लाइब्रेरी का उपयोग कर सकता हूं?

मैंने स्टैक ओवरफ्लो और Google पर भी खोज की, लेकिन मुझे यह कैसे करना है इस पर सुझाव नहीं मिल सका।

धन्यवाद।

उत्तर

17

जनहित याचिका यह कर सकते हैं:

import PIL 
from PIL import ImageFont 
from PIL import Image 
from PIL import ImageDraw 
font = ImageFont.truetype("/usr/share/fonts/dejavu/DejaVuSans.ttf", 25) 
img = Image.new("RGBA", (200,200), (120,20,20)) 
draw = ImageDraw.Draw(img) 
draw.text((0,0), "This is a test", (255,255,0), font=font) 
draw = ImageDraw.Draw(img) 
img.save("a_test.png") 

केवल त्रुटि है कि हो सकता है फॉन्ट को खोजने के लिए नहीं है। इस मामले में आप कोड लाइन में परिवर्तन करना होगा:

font = ImageFont.truetype("/usr/share/fonts/dejavu/DejaVuSans.ttf",25) 

स्रोत: http://python-catalin.blogspot.com/2010/06/add-text-on-image-with-pil-module.html

+0

करने के लिए भेजा जा सकता है अपने कोड में, मुझे लगता है, दूसरा एक नहीं आवश्यक है । –

2

जनहित याचिका एक दृष्टिकोण है। आप ImageMagick पर भी देख सकते हैं, जो compositing images का समर्थन करता है और text into images (और कई अन्य सामान) को भी डालता है।

PythonMagick के माध्यम से ImageMagick पर एक अजगर इंटरफ़ेस है।

+0

बहुत बहुत धन्यवाद! – redmarv

+0

मदद करने में खुशी ... – bgporter

2

मुझे लगता है कि opencv उपयोग करने के लिए आसान है:

import cv2 
import numpy as np 
import matplotlib.pyplot as plt 
image = cv2.imread('xxx.png') 
texted_image =cv2.putText(img=np.copy(image), text="hello", org=(200,200),fontFace=3, fontScale=3, color=(0,0,255), thickness=5) 
plt.imshow(texted_image) 
plt.show() 

ध्यान दें कि मूल छवि बदला जा सकता है, तो मैं np.copy जोड़ने बचाने के लिए। समारोह पर अधिक जानकारी http://docs.opencv.org/2.4.8/modules/core/doc/drawing_functions.html?highlight=puttext#cv2.putText

Fontface, वहाँ ड्रा = ImageDraw.Draw (img) के बारे में दो लाइनें हैं https://codeyarns.com/2015/03/11/fonts-in-opencv/

संबंधित मुद्दे

 संबंधित मुद्दे