टेक्स्ट आइकन बनाने के लिए Imagemagick का उपयोग करना
यहां भी उसी सिद्धांत के आधार पर , नीचे दी गई स्क्रिप्ट इमेजमेगिक की मदद से टेक्स्ट फाइल से टेक्स्ट आइकन बनाती है।
गोल पृष्ठभूमि की छवि का रंग और पाठ का रंग एक स्क्रिप्ट के सिर में सेट किया जा सकता है (साथ ही साथ कई अन्य गुण भी)।
यह क्या करता है
यह टेक्स्टफाइल पढ़ता है, प्रत्येक पंक्ति n_lines = 4
के पहले चार अक्षर (सेट इन ), पहले सात अक्षर (सेट n_chars = 10
) लेता है , और आकार की एक छवि पर एक ओवरले बनाता है, जैसे सेट psize = "100x100"
।
कैसे इस्तेमाल करे
स्क्रिप्ट imagemagick
को स्थापित करने की आवश्यकता है:
sudo apt-get install imagemagick
फिर:
- एक खाली फ़ाइल में स्क्रिप्ट की प्रतिलिपि बनाएँ
- इसे इस रूप में सहेजें
create_texticon.py
सिर अनुभाग में सेट करें:
- आइकन की पृष्ठभूमि का रंग
- आइकन की टेक्स्टलेयर का रंग
- निर्मित आइकन का आकार
- आइकन में दिखाने के लिए लाइनों की संख्या
- आइकन में दिखाने के लिए प्रति पंक्ति (प्रथम) वर्णों की संख्या
- पथ जहाँ छवि को बचाने के लिए
इसे अपने टेक्स्टफिल के साथ एक तर्क के रूप में चलाएं:
python3 /path/to/create_texticon.py </path/to/textfile.txt>
लिपी
#!/usr/bin/env python3
import subprocess
import sys
import os
import math
temp_dir = os.environ["HOME"]+"/"+".temp_iconlayers"
if not os.path.exists(temp_dir):
os.mkdir(temp_dir)
# ---
bg_color = "#DCDCDC" # bg color
text_color = "black" # text color
psize = [64, 64] # icon size
n_lines = 4 # number of lines to show
n_chars = 9 # number of (first) characters per line
output_file = "/path/to/output/icon.png" # output path here (path + file name)
#---
temp_bg = temp_dir+"/"+"bg.png"; temp_txlayer = temp_dir+"/"+"tx.png"
picsize = ("x").join([str(n) for n in psize]); txsize = ("x").join([str(n-8) for n in psize])
def create_bg():
work_size = (",").join([str(n-1) for n in psize])
r = str(round(psize[0]/10)); rounded = (",").join([r,r])
command = "convert -size "+picsize+' xc:none -draw "fill '+bg_color+\
' roundrectangle 0,0,'+work_size+","+rounded+'" '+temp_bg
subprocess.call(["/bin/bash", "-c", command])
def read_text():
with open(sys.argv[1]) as src:
lines = [l.strip() for l in src.readlines()]
return ("\n").join([l[:n_chars] for l in lines[:n_lines]])
def create_txlayer():
subprocess.call(["/bin/bash", "-c", "convert -background none -fill "+text_color+\
" -border 4 -bordercolor none -size "+txsize+" caption:"+'"'+read_text()+'" '+temp_txlayer])
def combine_layers():
create_txlayer(); create_bg()
command = "convert "+temp_bg+" "+temp_txlayer+" -background None -layers merge "+output_file
subprocess.call(["/bin/bash", "-c", command])
combine_layers