Metin için küçük resimler mi oluşturuyorsunuz?


10

Bazı metin dosyaları için küçük resimler oluşturmam gerekiyor. Açıkçası sistem bir şekilde tam olarak bunu yapma yeteneğine sahiptir (ekran görüntüsüne bakın). Bu görüntülere erişebilmemin ve daha sonra kullanmak üzere kopyalayabilmemin bir yolu var mı?

Yoksa bunun için özel bir komut (araç) var mı?

somefolder.png

Şuna baktım: komut satırı küçük resmi

Ve bu: Nautilus'a küçük resimler önceden oluşturmasını nasıl söyleyebilirim?

Hangi yararlı ama hiçbiri metin ile başa çıkamaz.


@Rmano, simgelerin hangi boyutta olması gerekir?
Jacob Vlijm

@JacobVlijm Fikir bir küçük resim oluşturmaktır --- temel form, script -s width input_url output_filenautilus tarafından kullanılan biçimdir. Örneğin, bkz. Rlog.rgtti.com/2011/11/24/… ve bağlantılı sayfa ...
Rmano

Yanıtlar:


5

Metin simgeleri oluşturmak için Imagemagick kullanma

Buradaki aynı prensibe dayanarak, aşağıdaki komut dosyası Imagemagick'in yardımıyla bir metin dosyasından bir metin simgesi oluşturur.

Yuvarlak arka plan görüntüsünün rengi ve metin rengi bir komut dosyasının başında (ve bir dizi başka özellikte) ayarlanabilir.

resim açıklamasını buraya girin

Ne yapar
Metin dosyasını okur, her satırın ilk dört satırını (küme n_lines = 4), ilk yedi karakterini (küme n_chars = 10) alır ve boyut olarak ayarlanmış bir görüntü üzerinde ör psize = "100x100".

Nasıl kullanılır

Komut dosyasının imagemagickyüklenmesi gerekir:

sudo apt-get install imagemagick

Sonra:

  1. Komut dosyasını boş bir dosyaya kopyalayın
  2. Farklı kaydet create_texticon.py
  3. baş bölümünde ayarlanır:

    • simgenin arka planının rengi
    • simgenin metin katmanının rengi
    • Oluşturulan simgenin boyutu
    • Simgede gösterilecek satır sayısı
    • Simgede gösterilecek satır başına (ilk) karakter sayısı
    • Görüntünün kaydedileceği yol
  4. Bağımsız değişken olarak metin dosyanızla çalıştırın:

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

Senaryo

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

Bu çözüm kalıcı mı?
αғsнιη

Kalıcı olarak ne demek istiyorsun? Komut dosyası simgeleri oluşturur veya soruyu yanlış mı anladım?
Jacob Vlijm

1
@Kasiya Küçük resim olarak kullanmak için bkz. Rlog.rgtti.com/2011/11/24/… ve rlog.rgtti.com/2010/11/28/adding-a-gnomenautilus-thumbnailer --- Nautilus güncelleyecektir otomatik olarak. İyi fikir; şimdi sadece pygmentsözdizimi vurgulamak için kullanmayı düşünüyorum ve mükemmel olacak. Teşekkürler!
Rmano

2
@JacobVlijm gerekli değil. Betiği doğru yere bırakın ve /usr/share/thumbnailers/...dosyayı yazın ve simgeler otomatik olarak görünecek ve sistem tarafından yönetilecek (önbelleğe alınmış, dosya değişikliklerinde güncellenmiş, vb.)
Rmano

1
@JacobVlijm her neyse --- Anladım. Cevabın olduğu gibi yeterli olduğunu düşünüyorum. Yazık ki sistem yapmanın yolunu kaldıramıyoruz, ama bazı düşük seviyeli kütüphanelerde kodlanmış olduğunu düşünmeye başladım.
Rmano

1

Fikir:

metin dosyasını pdf'ye dönüştürün ve pdfdrawküçük resmi oluşturmak için kullanın .

unoconv, OpenOffice ofis paketinin anladığı çeşitli belgeler arasında dönüştürme yapan bir yazılımdır.

Bu yöntemin avantajı: Neredeyse tüm dokümanlar için toplu küçük resimler bir komut dosyası oluşturarak kolayca oluşturulabilir.

Adımlar için özete bakın .

  1. OpenOffice başsız paketini yükle

    sudo apt-get install  openoffice.org-headless  openoffice.org-java-common  openoffice.org-writer  openoffice.org-calc  openoffice.org-impress
    
  2. UNO python kitaplığını yükle

    sudo apt-get install python-uno unoconv
    
  3. Gerekli yazı tiplerini yükleyin (Özellikle uluslararası dil için)

    Yazı tiplerini /usr/share/fonts/truetype/Sonra çalıştır'a kopyalafc-cache

  4. OpenOffice'i hizmet olarak çalıştırma

    soffice -headless -nofirststartwizard -accept="socket,host=localhost,port=8100;urp;StarOffice.Service"
    
  5. Unoconv komutunu kullanarak belgeyi PDF'ye dönüştürme

    unoconv -f pdf __[filename]__
    
  6. MuPDF aracını kullanarak PDF küçük resmi oluşturma

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

SO ile benzer soru


1
Hmmm ... metin dosyası sözcük işlemci dosyaları DEĞİLDİR. Burada oldukça basit bir yanlış anlama var. Metin dosyası program kaynakları, günlükler, sadece ".txt" dosyaları, vb .'dir. Office belgelerinin ve PDF'lerinin küçük resimleri iyi çalışıyor.
Rmano

@Rmano: PDF yoluyla gitmek, ECM yazılımı tarafından önizleme oluştururken, genellikle hiç kimsenin günlük dosyaları gibi PDF'ye dönüştürmeyeceği biçimler için bile sıklıkla kullanılan bir tekniktir. Bu iyi bir fikir.
Nicolas Raoul
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.