Saya perlu membuat thumbnail untuk beberapa file teks.
Jelas sekali sistem memiliki kemampuan untuk melakukan hal ini (lihat tangkapan layar). Apakah ada cara agar saya dapat mengakses gambar-gambar ini dan menyalinnya untuk digunakan nanti?
Atau ada perintah (alat) khusus untuk ini?
Saya melihat ini:
thumbnail baris perintah
Dan ini:
Bagaimana cara saya menginstruksikan Nautilus untuk membuat thumbnail terlebih dahulu?
Yang berguna tetapi tidak ada yang bisa menangani teks.
Jawaban yang Diterima:
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).
Apa fungsinya
Ia membaca file teks, mengambil empat baris pertama (ditetapkan dalam n_lines = 4
), tujuh karakter pertama (ditetapkan dalam n_chars = 10
) dari setiap baris, dan membuat overlay di atas gambar berukuran, yang diatur dalam mis. psize = "100x100"
.
Cara menggunakan
Script membutuhkan imagemagick
yang akan dipasang:
sudo apt-get install imagemagick
Kemudian:
- Salin skrip ke file kosong
- Simpan sebagai
create_texticon.py
-
atur di bagian kepala:
- warna latar belakang ikon
- warna lapisan teks ikon
- Ukuran ikon yang dibuat
- Jumlah baris yang akan ditampilkan di ikon
- Jumlah karakter (pertama) per baris untuk ditampilkan di ikon
- Jalur tempat menyimpan gambar
-
Jalankan dengan file teks Anda sebagai argumen:
python3 /path/to/create_texticon.py </path/to/textfile.txt>
Skrip
#!/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 = "//eadn-wc01-5196795.nxedge.io/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