生成文本缩略图?


10

我需要为某些文本文件生成缩略图。显然,系统可以以某种方式完全做到这一点(请参见屏幕截图)。有什么方法可以访问这些图像并复制它们以备后用?

还是为此有一个特殊的命令(工具)?

somefolder.png

我看着这个: 命令行缩略图

而且: 我如何指示Nautilus预生成缩略图?

哪些有用,但没有一个可以处理文本。


@Rmano,图标需要多少尺寸?
Jacob Vlijm'2

@JacobVlijm这个想法是创建一个缩略图器---基本格式是script -s width input_url output_filenautilus使用的格式。参见示例rlog.rgtti.com/2011/11/24/…和链接的页面...
Rmano

Answers:


5

使用Imagemagick创建文本图标

根据与此处相同的原理,以下脚本在Imagemagick的帮助下从文本文件创建文本图标。

可以在脚本的开头(以及许多其他属性)中设置舍入的背景图像的颜色和文本的颜色。

在此处输入图片说明

它的作用
读取文本文件,获取第4行(设置为n_lines = 4),n_chars = 10每行的前7个字符(设置为),并在大小设置为的图像上创建覆盖,例如在中设置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

该解决方案是否持久?
αғsнιη

坚持到底是什么意思?脚本会创建图标,还是我误会了这个问题?
Jacob Vlijm

1
@Kasiya要将其用作缩略图,请参阅rlog.rgtti.com/2011/11/24/…rlog.rgtti.com/2010/11/28/adding-a-gnomenautilus-thumbnailer --- Nautilus将对其进行更新自动。好主意; 现在只需考虑使用pygment语法突出显示它,它将是完美的。谢谢!
Rmano

2
不需要@JacobVlijm。只需将脚本放在正确的位置并写入/usr/share/thumbnailers/...文件,图标就会自动出现,并由系统进行管理(缓存,文件更改更新等)
Rmano 2015年

1
@JacobVlijm--我明白了。我认为答案就足够了。遗憾的是我们无法利用系统的方式来实现,但是我开始假设它是在某些低级库中进行了硬编码的。
Rmano'3

1

主意:

将文本文件转换为pdf并用于pdfdraw生成缩略图。

unoconv是一款可在OpenOffice Office套件理解的各种文档之间转换的软件。

此方法的优点:通过创建脚本,可以轻松生成几乎所有文档的批量缩略图。

有关步骤,请参见要点

  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. 使用unoconv命令将文档转换为PDF

    unoconv -f pdf __[filename]__
    
  6. 使用MuPDF工具创建PDF缩略图

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

关于SO的类似问题


1
嗯...文本文件不是文字处理程序文件。这里有一个非常基本的误解。文本文件是程序源,日志,只是“ .txt”文件等。Office文档和PDF的缩略图可以正常工作。
Rmano

@Rmano:PDF预览是ECM软件在生成预览时经常使用的一种技术,即使对于通常没人会转换为PDF的格式(例如日志文件)也是如此。因此,这是一个好主意。
Nicolas Raoul
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.