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

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

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

somefolder.png

Я посмотрел на это: миниатюра командной строки

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

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

2 ответа

Решение

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

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

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

введите описание изображения здесь

Что оно делает
Он читает текстовый файл, занимает первые четыре строки n_lines = 4) первые семь символов n_chars = 10) каждой строки, и создает наложение поверх изображения размера, установленного, например, в psize = "100x100",

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

Скрипт нужен imagemagick быть установленным:

sudo apt-get install imagemagick

Затем:

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

    • цвет фона иконы
    • цвет текстового слоя иконки
    • Размер создаваемой иконки
    • Количество строк, отображаемых на значке
    • Количество (первых) символов в строке, отображаемых на значке
    • Путь, куда сохранить изображение
  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

Идея:

преобразовать текстовый файл в 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. Установить UNO библиотеку 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  
    

похожий вопрос на SO

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