Hasilkan thumbnail untuk teks?


10

Saya perlu membuat thumbnail untuk beberapa file teks. Jelas sistem entah bagaimana memiliki kemampuan untuk melakukan hal ini (lihat screenshot). Apakah ada cara saya dapat mengakses gambar-gambar ini dan hanya menyalinnya untuk digunakan nanti?

Atau ada perintah (alat) khusus untuk ini?

somefolder.png

Saya melihat ini: thumbnail baris perintah

Dan ini: Bagaimana saya bisa menginstruksikan Nautilus untuk membuat thumbnail sebelumnya?

Yang berguna tetapi tidak ada yang bisa berurusan dengan teks.


@Rmano, ukuran ikon apa yang dibutuhkan?
Jacob Vlijm

@JacobVlijm Idenya adalah membuat thumbnailer --- bentuk dasarnya script -s width input_url output_fileadalah format yang digunakan oleh nautilus. Lihat misalnya rlog.rgtti.com/2011/11/24/… dan halaman tertaut ...
Rmano

Jawaban:


5

Menggunakan Imagemagick untuk membuat ikon teks

Berdasarkan prinsip yang sama seperti di sini , skrip di bawah ini membuat ikon teks dari file teks dengan bantuan Imagemagick.

Warna gambar latar belakang bulat dan warna teks dapat diatur di kepala skrip (serta sejumlah properti lainnya).

masukkan deskripsi gambar di sini

Apa yang dilakukannya
Ini membaca file teks, mengambil empat baris pertama (set in n_lines = 4), tujuh karakter pertama (set in n_chars = 10) dari setiap baris, dan membuat overlay gambar ukuran, diatur dalam mis psize = "100x100".

Cara Penggunaan

Skrip perlu imagemagickdiinstal:

sudo apt-get install imagemagick

Kemudian:

  1. Salin skrip ke file kosong
  2. Simpan sebagai create_texticon.py
  3. atur di bagian kepala:

    • warna latar belakang ikon
    • warna textlayer ikon
    • Ukuran ikon yang dibuat
    • Jumlah garis untuk ditampilkan di ikon
    • Jumlah karakter (pertama) per baris untuk ditampilkan di ikon
    • Jalur tempat menyimpan gambar
  4. Jalankan dengan file teks Anda sebagai argumen:

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

Naskah

#!/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

Apakah solusi ini persisten?
αғsнιη

Apa yang Anda maksud dengan gigih? Script menciptakan ikon, atau apakah saya salah mengerti pertanyaan?
Jacob Vlijm

1
@Kasiya Untuk menggunakannya sebagai thumbnail, lihat rlog.rgtti.com/2011/11/24/… dan rlog.rgtti.com/2010/11/28/adding-a-gnomenautilus-thumbnailer --- Nautilus akan memperbaruinya secara otomatis. Ide bagus; sekarang hanya berpikir tentang menggunakan pygmentsintaksis dan akan sempurna. Terima kasih!
Rmano

2
@JacobVlijm tidak diperlukan. Cukup letakkan skrip di tempat yang benar dan tulis /usr/share/thumbnailers/...file dan ikon akan muncul secara otomatis, dan dikelola oleh sistem (di-cache, diperbarui pada perubahan file, dll.)
Rmano

1
@ JacobVlijm terserah --- saya mendapat ide. Saya pikir jawabannya sudah cukup. Sayang sekali kami tidak dapat memanfaatkan cara sistem untuk melakukannya, tetapi saya mulai mengandaikan itu adalah kode yang sulit di beberapa perpustakaan tingkat rendah.
Rmano

1

Ide :

konversikan file teks menjadi pdf dan gunakan pdfdrawuntuk menghasilkan thumbnail.

unoconv adalah perangkat lunak yang mengkonversi antara berbagai dokumen yang dipahami oleh office suite OpenOffice.

Keuntungan metode ini: Thumbnail massal untuk hampir semua dokumen dapat dibuat dengan mudah dengan membuat skrip.

Lihat inti untuk langkah-langkahnya.

  1. Instal paket tanpa kepala OpenOffice

    sudo apt-get install  openoffice.org-headless  openoffice.org-java-common  openoffice.org-writer  openoffice.org-calc  openoffice.org-impress
    
  2. Instal pustaka python UNO

    sudo apt-get install python-uno unoconv
    
  3. Instal font yang diperlukan (Khusus untuk bahasa internasional)

    Salin font untuk /usr/share/fonts/truetype/Kemudian jalankanfc-cache

  4. Jalankan OpenOffice sebagai layanan

    soffice -headless -nofirststartwizard -accept="socket,host=localhost,port=8100;urp;StarOffice.Service"
    
  5. Konversi dokumen ke PDF menggunakan perintah unoconv

    unoconv -f pdf __[filename]__
    
  6. Buat thumbnail PDF dengan menggunakan alat MuPDF

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

pertanyaan serupa di SO


1
Hmmm ... file teks BUKAN file pengolah kata. Ada kesalahpahaman yang cukup mendasar di sini. File teks adalah sumber program, log, hanya file ".txt", dll. Dokumen dan PDF kantor berfungsi dengan baik.
Rmano

@Rmano: Pergi melalui PDF adalah teknik yang sering digunakan oleh perangkat lunak ECM saat membuat pratinjau, bahkan untuk format yang biasanya tidak seorang pun akan mengonversi ke PDF, seperti file log. Jadi, ini ide yang bagus.
Nicolas Raoul
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.