Metin simgeleri oluşturmak için Imagemagick kullanma
Buradaki aynı prensibe dayanarak, aşağıdaki komut dosyası Imagemagick'in yardımıyla bir metin dosyasından bir metin simgesi oluşturur.
Yuvarlak arka plan görüntüsünün rengi ve metin rengi bir komut dosyasının başında (ve bir dizi başka özellikte) ayarlanabilir.
Ne yapar
Metin dosyasını okur, her satırın ilk dört satırını (küme n_lines = 4
), ilk yedi karakterini (küme n_chars = 10
) alır ve boyut olarak ayarlanmış bir görüntü üzerinde ör psize = "100x100"
.
Nasıl kullanılır
Komut dosyasının imagemagick
yüklenmesi gerekir:
sudo apt-get install imagemagick
Sonra:
- Komut dosyasını boş bir dosyaya kopyalayın
- Farklı kaydet
create_texticon.py
baş bölümünde ayarlanır:
- simgenin arka planının rengi
- simgenin metin katmanının rengi
- Oluşturulan simgenin boyutu
- Simgede gösterilecek satır sayısı
- Simgede gösterilecek satır başına (ilk) karakter sayısı
- Görüntünün kaydedileceği yol
Bağımsız değişken olarak metin dosyanızla çalıştırın:
python3 /path/to/create_texticon.py </path/to/textfile.txt>
Senaryo
#!/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