Генерировать миниатюры для текста?

Я должен генерировать миниатюры для некоторых текстовых файлов. Очевидно, система так или иначе имеет способность сделать точно это (см. снимок экрана). Есть ли какой-либо способ, которым я могу получить доступ к этим изображениям и просто скопировать их для более позднего использования?

Или есть ли специальная команда (инструмент) для этого?

somefolder.png

Я посмотрел на это: командная строка thumbnailing

И это: Как я могу дать Наутилусу команду предварительно генерировать миниатюры?

Которые были полезны, но ни один не мог иметь дело с текстом.

10
задан 13 April 2017 в 05:25

2 ответа

Используя Imagemagick для создания текстовых значков

На основе того же принципа как здесь, сценарий ниже создает текстовый значок из текстового файла с помощью Imagemagick.

Цвет округленного фонового изображения и цвета текста может быть выбран в заголовке сценария (а также много других свойств).

enter image description here

Что это делает
Это читает текстовый файл, берет th сначала четыре строки (начаться n_lines = 4), первые семь символов (начинаются n_chars = 10) из каждой строки, и создает наложение по изображению размера, набора, например. psize = "100x100".

Как использовать

Потребности сценария imagemagick быть установленным:

sudo apt-get install imagemagick

Затем:

  1. Скопируйте сценарий в пустой файл
  2. Сохраните его как create_texticon.py
  3. набор в главном разделе:

    • цвет образования значка
    • цвет textlayer значка
    • Размер созданного значка
    • Количество строк для показа в значке
    • Количество (первых) символов на строку для показа в значке
    • Путь, где сохранить образ
  4. Выполните его со своим текстовым файлом как аргумент:

    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
5
ответ дан 23 November 2019 в 04:38

Идея:

преобразуйте текстовый файл в PDF и использование pdfdraw генерировать миниатюру.

unoconv является программным обеспечением, которое преобразовывает между различными документами, которые понимает пакет офисных программ OpenOffice.

Преимущество этого метода: Объемные миниатюры почти для всего документа могут быть сгенерированы легко путем создания сценария.

Посмотрите суть для шагов.

  1. OpenOffice установки бездисплейный пакет

    sudo apt-get install  openoffice.org-headless  openoffice.org-java-common  openoffice.org-writer  openoffice.org-calc  openoffice.org-impress
    
  2. Установите библиотеку Python ООН

    sudo apt-get install python-uno unoconv
    
  3. Установите необходимые шрифты (Специально для международного языка)

    Шрифты копии к /usr/share/fonts/truetype/ Затем выполненный fc-cache

  4. Выполненный OpenOffice как услуга

    soffice -headless -nofirststartwizard -accept="socket,host=localhost,port=8100;urp;StarOffice.Service"
    
  5. Преобразуйте документ PDF с помощью unoconv команду

    unoconv -f pdf __[filename]__
    
  6. Создайте миниатюру PDF при помощи инструмента MuPDF

    pdfdraw -r 100 -o __[output-thumbnail]__ __[pdf-file]__ 1  
    

подобный вопрос на ТАК

1
ответ дан 23 November 2019 в 04:38

Другие вопросы по тегам:

Похожие вопросы: