Ho bisogno di generare miniature per alcuni file di testo.
Ovviamente il sistema in qualche modo ha la capacità di fare esattamente questo (vedi la schermata). C'è un modo per accedere a queste immagini e copiarle per un uso successivo?
O esiste un comando (strumento) speciale per questo?
Ho guardato questo:
miniatura della riga di comando
E questo:
Come posso istruire Nautilus a pre-generare le miniature?
Che erano utili ma nessuno poteva gestire il testo.
Risposta accettata:
Utilizzare Imagemagick per creare icone di testo
Basato sullo stesso principio di qui, lo script seguente crea un'icona di testo da un file di testo con l'aiuto di Imagemagick.
Il colore dell'immagine di sfondo arrotondata e il colore del testo possono essere impostati nell'intestazione di uno script (oltre a una serie di altre proprietà).
Cosa fa
Legge il file di testo, prende le prime quattro righe (impostate in n_lines = 4
), i primi sette caratteri (impostati in n_chars = 10
) di ciascuna linea e crea una sovrapposizione su un'immagine della dimensione, impostata ad es. psize = "100x100"
.
Come si usa
Lo script necessita di imagemagick
da installare:
sudo apt-get install imagemagick
Quindi:
- Copia lo script in un file vuoto
- Salva come
create_texticon.py
-
impostato nella sezione testa:
- il colore dello sfondo dell'icona
- il colore del livello di testo dell'icona
- La dimensione dell'icona creata
- Il numero di righe da mostrare nell'icona
- Il numero di (primi) caratteri per riga da mostrare nell'icona
- Il percorso in cui salvare l'immagine
-
Eseguilo con il tuo file di testo come argomento:
python3 /path/to/create_texticon.py </path/to/textfile.txt>
Il copione
#!/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