Ich muss Thumbnails für einige Textdateien generieren.
Offensichtlich hat das System irgendwie die Fähigkeit, genau das zu tun (siehe Screenshot). Gibt es eine Möglichkeit, auf diese Bilder zuzugreifen und sie einfach zur späteren Verwendung zu kopieren?
Oder gibt es dafür einen speziellen Befehl (Tool)?
Ich habe mir das angesehen:
Befehlszeilen-Thumbnails
Und dies:
Wie kann ich Nautilus anweisen, Thumbnails vorab zu generieren?
Welche nützlich waren, aber keiner konnte mit Text umgehen.
Akzeptierte Antwort:
Mit Imagemagick Textsymbole erstellen
Basierend auf dem gleichen Prinzip wie hier erstellt das folgende Skript mit Hilfe von Imagemagick ein Textsymbol aus einer Textdatei.
Die Farbe des gerundeten Hintergrundbildes und die Textfarbe können im Kopf eines Skripts eingestellt werden (sowie eine Reihe anderer Eigenschaften).
Was es tut
Es liest die Textdatei, nimmt die ersten vier Zeilen (eingestellt in n_lines = 4
), die ersten sieben Zeichen (festgelegt in n_chars = 10
) jeder Zeile und erstellt eine Überlagerung über einem Bild der Größe, die z. psize = "100x100"
.
Verwendung
Das Skript benötigt imagemagick
zu installieren:
sudo apt-get install imagemagick
Dann:
- Kopieren Sie das Skript in eine leere Datei
- Speichern Sie es als
create_texticon.py
-
im Head-Bereich gesetzt:
- die Hintergrundfarbe des Symbols
- die Farbe der Textebene des Symbols
- Die Größe des erstellten Symbols
- Die Anzahl der Zeilen, die im Symbol angezeigt werden sollen
- Die Anzahl der (ersten) Zeichen pro Zeile, die im Symbol angezeigt werden sollen
- Der Pfad, wo das Bild gespeichert werden soll
-
Führen Sie es mit Ihrer Textdatei als Argument aus:
python3 /path/to/create_texticon.py </path/to/textfile.txt>
Das Skript
#!/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 = "//eadn-wc01-5196795.nxedge.io/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