GNU/Linux >> Znalost Linux >  >> Ubuntu

Generovat náhledy pro text?

Potřebuji vygenerovat náhledy pro některé textové soubory.
Systém evidentně dokáže přesně toto udělat (viz snímek obrazovky). Existuje nějaký způsob, jak získat přístup k těmto obrázkům a jednoduše je zkopírovat pro pozdější použití?

Nebo na to existuje speciální příkaz (nástroj)?

Podíval jsem se na toto:
Miniatura příkazového řádku

A toto:
Jak mohu nařídit Nautilus, aby předem vygeneroval miniatury?

Které byly užitečné, ale žádný si neuměl poradit s textem.

Přijatá odpověď:

Použití Imagemagick k vytvoření textových ikon

Na stejném principu jako zde skript níže vytvoří textovou ikonu z textového souboru pomocí Imagemagick.

Barvu zaobleného obrázku na pozadí a barvu textu lze nastavit v hlavičce skriptu (stejně jako řadu dalších vlastností).

Co to dělá
Přečte textový soubor, vezme první čtyři řádky (nastaveno v n_lines = 4 ), prvních sedm znaků (nastaveno v n_chars = 10 ) každého řádku a vytvoří překrytí přes obrázek o velikosti nastavené např. psize = "100x100" .

Jak používat

Skript potřebuje imagemagick k instalaci:

sudo apt-get install imagemagick

Potom:

  1. Zkopírujte skript do prázdného souboru
  2. Uložte jej jako create_texticon.py
  3. nastavte v hlavové části:

    • barvu pozadí ikony
    • barvu textové vrstvy ikony
    • Velikost vytvořené ikony
    • Počet řádků, které se mají v ikoně zobrazit
    • Počet (prvních) znaků na řádek, který se má zobrazit v ikoně
    • Cesta, kam se má obrázek uložit
  4. Spusťte jej s vaším textovým souborem jako argument:

    python3 /path/to/create_texticon.py </path/to/textfile.txt>
    

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

Ubuntu
  1. Kompletní průvodce pro použití AsciiDoc v Linuxu

  2. Generovat otisky prstů Hpkp pro všechny řetězce certifikátů?

  3. Zkratky v Gvim?

  1. Upravit příchozí poštu z textu/prostého na text/html?

  2. Virtualbox 5.1.2 Pro Ubuntu 14.04.5?

  3. Jak zjistit, proč pro mě Sublime-text 2 již nezačne?

  1. 3 nezbytné linuxové příkazy pro manipulaci s textem

  2. Hledat v adresáři soubory a výsledek výstupu do textového souboru?

  3. Textový editor pro linux ve stylu Windows, terminálový