テキストのサムネイルを生成しますか?


10

一部のテキストファイルのサムネイルを生成する必要があります。明らかに、システムにはこれを正確に実行する機能があります(スクリーンショットを参照)。これらの画像にアクセスして、後で使用するためにコピーする方法はありますか?

それとも特別なコマンド(ツール)がありますか?

somefolder.png

私はこれを見ました: コマンドラインのサムネイル

そしてこれ: Nautilusにサムネイルを事前に生成するように指示するにはどうすればよいですか?

これは便利でしたが、テキストを処理できませんでした。


@Rmano、アイコンはどのくらいのサイズにする必要がありますか?
Jacob Vlijm、2015

@JacobVlijmアイデアはサムネラを作成することです---基本的なフォームはnautilusでscript -s width input_url output_file使用されるフォーマットです。たとえば、rlog.rgtti.com / 2011/11/24 /…とリンクされたページを参照してください...
Rmano

回答:


5

Imagemagickを使用してテキストアイコンを作成する

ここと同じ原理に基づいて、以下のスクリプトはImagemagickを利用してテキストファイルからテキストアイコンを作成します。

丸みを帯びた背景画像の色とテキストの色は、スクリプトの先頭で(および他の多くのプロパティと同様に)設定できます。

ここに画像の説明を入力してください

それは何
それはテキストファイルを読み込んで、目の最初の4行(中セット取りn_lines = 4)、最初の7文字(中セットn_chars = 10各行のを)、および例えばに設定されたサイズの画像の上にオーバーレイを作成しますpsize = "100x100"

使い方

スクリプトimagemagickをインストールする必要があります。

sudo apt-get install imagemagick

次に:

  1. スクリプトを空のファイルにコピーします
  2. 名前を付けて保存 create_texticon.py
  3. ヘッドセクションで設定:

    • アイコンの背景の色
    • アイコンのテキストレイヤーの色
    • 作成されるアイコンのサイズ
    • アイコンに表示する行数
    • アイコンに表示する1行あたりの(最初の)文字数
    • 画像を保存するパス
  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、2015

1
@Kasiyaサムネイルとして使用するには、rlog.rgtti.com / 2011/11/24 / … およびrlog.rgtti.com/2010/11/28/adding-a-gnomenautilus-thumbnailer --- Nautilusが更新します自動的に。良いアイデア; pygment構文の強調表示を使用することを考えているだけで、完璧になります。ありがとう!
Rmano 2015

2
@JacobVlijmは必要ありません。スクリプトを適切な場所にドロップして/usr/share/thumbnailers/...ファイルを書き込むだけで、アイコンが自動的に表示され、システムによって管理されます(キャッシュ、ファイルの変更時に更新など)
Rmano

1
@JacobVlijm何でも---私はアイデアを得た。そのまま答えで十分だと思います。システムのやり方を活用できないのは残念ですが、低レベルのライブラリでハードコーディングされていると思います。
Rmano 2015年

1

考え :

テキストファイルを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. unoconvコマンドを使用してドキュメントをPDFに変換する

    unoconv -f pdf __[filename]__
    
  6. MuPDFツールを使用してPDFサムネイルを作成する

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

SOに関する同様の質問


1
うーん...テキストファイルはワードプロセッサフ​​ァイルではありません。ここにはかなり基本的な誤解があります。テキストファイルは、プログラムソース、ログ、単なる「.txt」ファイルなどです。OfficeドキュメントとPDFのサムネイルは正常に機能しています。
Rmano 2015

@Rmano:Going via PDFは、ECMソフトウェアでプレビューを生成するときによく使用される手法です。通常、ログファイルなど、だれもPDFに変換しない形式でも使用できます。したがって、これは良い考えです。
Nicolas Raoul
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.