Tạo hình thu nhỏ cho văn bản?


10

Tôi cần tạo hình thu nhỏ cho một số tệp văn bản. Rõ ràng hệ thống bằng cách nào đó có khả năng thực hiện chính xác điều này (xem ảnh chụp màn hình). Có cách nào tôi có thể truy cập những hình ảnh này và chỉ cần sao chép chúng để sử dụng sau này không?

Hoặc có một lệnh đặc biệt (công cụ) cho việc này?

somefolder.png

Tôi đã xem xét điều này: hình thu nhỏ dòng lệnh

Và điều này: Làm cách nào tôi có thể hướng dẫn Nautilus tạo trước hình thu nhỏ?

Đó là hữu ích nhưng không ai có thể đối phó với văn bản.


@Rmano, các biểu tượng cần có kích thước như thế nào?
Jacob Vlijm

@JacobVlijm Ý tưởng là tạo một hình thu nhỏ --- hình thức cơ bản script -s width input_url output_filelà định dạng được sử dụng bởi nautilus. Xem ví dụ rlog.rgtti.com/2011/11/24/ và trang được liên kết ...
Rmano

Câu trả lời:


5

Sử dụng Imagemagick để tạo biểu tượng văn bản

Dựa trên nguyên tắc tương tự như ở đây , tập lệnh bên dưới tạo biểu tượng văn bản từ tệp văn bản với sự trợ giúp của Imagemagick.

Màu của hình nền tròn và màu văn bản có thể được đặt trong phần đầu của tập lệnh (cũng như một số thuộc tính khác).

nhập mô tả hình ảnh ở đây

Những gì nó làm
Nó đọc tệp văn bản, lấy bốn dòng đầu tiên (được đặt trong n_lines = 4), bảy ký tự đầu tiên (được đặt trong n_chars = 10) của mỗi dòng và tạo một lớp phủ trên một hình ảnh có kích thước, được đặt trong ví dụ psize = "100x100".

Cách sử dụng

Kịch bản cần imagemagickđược cài đặt:

sudo apt-get install imagemagick

Sau đó:

  1. Sao chép tập lệnh vào một tập tin trống
  2. Lưu nó dưới dạng create_texticon.py
  3. thiết lập trong phần đầu:

    • màu nền của biểu tượng
    • màu sắc của trình duyệt văn bản của biểu tượng
    • Kích thước của biểu tượng đã tạo
    • Số lượng dòng để hiển thị trong biểu tượng
    • Số lượng ký tự (đầu tiên) trên mỗi dòng sẽ hiển thị trong biểu tượng
    • Đường dẫn lưu ảnh
  4. Chạy nó với textfile của bạn như là một đối số:

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

Kịch bản

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

Là giải pháp này bền bỉ?
αsнι

Bạn có ý nghĩa gì bởi sự kiên trì? Kịch bản tạo các biểu tượng, hoặc tôi đã hiểu sai câu hỏi?
Jacob Vlijm

1
@Kasiya Để sử dụng nó như là một thumbnailers, xem rlog.rgtti.com/2011/11/24/...rlog.rgtti.com/2010/11/28/adding-a-gnomenautilus-thumbnailer --- Nautilus sẽ cập nhật nó tự động. Ý kiến ​​hay; Bây giờ chỉ cần nghĩ về việc sử dụng pygmentcú pháp làm nổi bật nó và nó sẽ hoàn hảo. Cảm ơn!
Rmano

2
@JacobVlijm không cần thiết. Chỉ cần thả tập lệnh vào đúng vị trí và viết /usr/share/thumbnailers/...tệp và các biểu tượng sẽ tự động xuất hiện và được quản lý bởi hệ thống (được lưu trong bộ nhớ cache, cập nhật khi thay đổi tệp, v.v.)
Rmano

1
@JacobVlijm sao cũng được --- tôi có ý tưởng. Tôi nghĩ rằng câu trả lời là đủ. Đáng tiếc chúng ta không thể tận dụng cách thức hệ thống để làm điều đó, nhưng tôi bắt đầu cho rằng nó được mã hóa cứng trong một số thư viện cấp thấp.
Rmano

1

Ý tưởng :

chuyển đổi tập tin văn bản thành pdf và sử dụng pdfdrawđể tạo hình thu nhỏ.

unoconv là một phần mềm chuyển đổi giữa các tài liệu khác nhau mà bộ phần mềm văn phòng OpenOffice hiểu.

Ưu điểm của phương pháp này: Hình thu nhỏ hàng loạt cho hầu hết tất cả tài liệu có thể được tạo dễ dàng bằng cách tạo tập lệnh.

Xem ý chính cho các bước.

  1. Cài đặt gói không đầu OpenOffice

    sudo apt-get install  openoffice.org-headless  openoffice.org-java-common  openoffice.org-writer  openoffice.org-calc  openoffice.org-impress
    
  2. Cài đặt thư viện python UNO

    sudo apt-get install python-uno unoconv
    
  3. Cài đặt phông chữ cần thiết (Đặc biệt đối với ngôn ngữ quốc tế)

    Sao chép phông chữ để sau /usr/share/fonts/truetype/đó chạyfc-cache

  4. Chạy OpenOffice như một dịch vụ

    soffice -headless -nofirststartwizard -accept="socket,host=localhost,port=8100;urp;StarOffice.Service"
    
  5. Chuyển đổi tài liệu sang PDF bằng lệnh unoconv

    unoconv -f pdf __[filename]__
    
  6. Tạo hình thu nhỏ PDF bằng cách sử dụng công cụ MuPDF

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

câu hỏi tương tự trên SO


1
Hmmm ... tệp văn bản KHÔNG phải là tệp xử lý. Có một quan niệm sai lầm khá cơ bản ở đây. Tệp văn bản là nguồn chương trình, nhật ký, chỉ là ".txt" fles, v.v. Tài liệu văn phòng và tệp PDF có hình thu nhỏ của chúng hoạt động tốt.
Rmano

@Rmano: Chuyển qua PDF là một kỹ thuật thường được sử dụng bởi phần mềm ECM khi tạo bản xem trước, ngay cả đối với các định dạng mà không ai thường chuyển đổi thành PDF, chẳng hạn như tệp nhật ký. Vì vậy, đây là một ý tưởng tốt.
Nicolas Raoul
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.