ฉันจะสั่งให้ Nautilus สร้างภาพขนาดย่อไว้ล่วงหน้าได้อย่างไร


33

ฉันมีห้องสมุดขนาดใหญ่ของเอกสาร PDF (เอกสารการบรรยายเอกสารประกอบคำบรรยาย) ที่ฉันต้องการให้สามารถนำทางได้อย่างรวดเร็ว สำหรับที่ฉันต้องการรูปขนาดย่อ

อย่างไรก็ตามในเวลาเดียวกันฉันเห็นว่า~/.thumbnailsโฟลเดอร์ซ้อนกันด้วยนิ้วหัวแม่มือที่ฉันไม่ต้องการจริงๆ การลบภาพขนาดย่อโดยไม่ต้องเอานิ้วโป้งที่สำคัญนั้นเป็นไปไม่ได้ ถ้าฉันจะลบพวกเขาฉันจะต้องไปที่โฟลเดอร์ทุกไฟล์ที่มีเอกสาร PDF ที่สำคัญและปล่อยให้แคชภาพขนาดเล็กงอกใหม่

ฉันชอบที่จะทำให้กระบวนการนี้เป็นแบบอัตโนมัติ มีวิธีใดบ้างที่ฉันสามารถบอกให้ nautilus แคชล่วงหน้าสำหรับชุดของไดเรกทอรีที่กำหนดไว้ล่วงหน้าได้บ้าง

หมายเหตุ : ฉันพบชุดสคริปต์ทุบตีที่ปรากฏเป็นภาพและวิดีโอ แต่ไม่ใช่สำหรับเอกสารอื่น บางทีบางคนที่มีประสบการณ์เกี่ยวกับการเขียนสคริปต์มากขึ้นอาจสามารถปรับสิ่งเหล่านี้สำหรับเอกสาร PDF หรืออย่างน้อยก็ชี้ให้ฉันไปในทิศทางที่ถูกต้องเกี่ยวกับสิ่งที่ฉันต้องแก้ไขเพื่อให้ทำงานกับเอกสาร PDF ได้เช่นกัน


แก้ไข :

การตอบคำถามนี้ค่อนข้างท่วมท้น ให้ฉันก่อนขอบคุณทุกคนที่มีส่วนร่วมในการแก้ปัญหานี้ คำถามคำตอบและการอภิปรายทั้งหมดที่อยู่รอบตัวเป็นตัวอย่างที่ดีว่าความร่วมมือร่วมใจของหลาย ๆ ฝ่ายสามารถนำไปสู่ทางออกที่ดีที่สุดได้อย่างไร นี่คือสิ่งที่ทำให้ Linux และ Open Source นั้นยอดเยี่ยมมาก

คำตอบที่ให้ไว้ทั้งหมดควรได้รับความโปรดปรานที่ฉันได้รับในตอนแรก ยังมีรางวัลเพียงรางวัลเดียวเท่านั้น ฉันเป็นหนี้ต่อผู้อ่านทุกคนในอนาคตที่จะเลือกคำตอบที่สามารถแก้ปัญหาได้อย่างมีประสิทธิภาพที่สุด ในการพิจารณาโซลูชันที่ฉันได้ทำการทดสอบขั้นสุดท้ายเปรียบเทียบสคริปต์ทั้งสามในความเข้ากันได้ความเร็วและคุณภาพผลผลิต นี่คือผลลัพธ์:


รูปย่อ 1โดย rosch:

ความเข้ากันได้ : ✔ช่องว่างในชื่อไฟล์ ✔ช่องว่างในชื่อไดเรกทอรี ✘สอดคล้องกับ freedesktop

ความเร็ว : 95 PDF ใน 12,6 วินาที

คุณภาพ : หุ้นหอยโข่งคุณภาพ

สิทธิพิเศษเพิ่มเติม : 1. ) ข้ามไฟล์โดยอัตโนมัติด้วยนิ้วหัวแม่มือที่มีอยู่แล้ว; 2. ) ไม่จำเป็นต้องมีแพ็คเกจเพิ่มเติม

Thumbnailer 2โดย Martin Orda:

ความเข้ากันได้ : ✔ช่องว่างในชื่อไฟล์ ✔ช่องว่างในชื่อไดเรกทอรี ✘สอดคล้องกับ freedesktop

ความเร็ว : 95 PDF ใน 70,0 วินาที

คุณภาพ : ปรับขนาดได้ดีกว่าภาพสต็อก

สิทธิพิเศษเพิ่มเติม : 1. ) ข้ามไฟล์โดยอัตโนมัติโดยใช้นิ้วหัวแม่มือที่มีอยู่ก่อน 2. ) เข้ากันได้กับรูปแบบภาพที่หลากหลายนอกเหนือจาก PDF 3) แพลตฟอร์มอิสระไม่พึ่งพาองค์ประกอบของ GNOME

Thumbnailer 3โดย James Henstridge:

ความเข้ากันได้ : ✔ช่องว่างในชื่อไฟล์ ✔ช่องว่างในชื่อไดเรกทอรี ✔สอดคล้องกับ freedesktop

ความเร็ว : 95 PDF ใน 10,8 วินาที

คุณภาพ : หุ้นหอยโข่งคุณภาพ

สิทธิพิเศษเพิ่มเติม : 1. ) ข้ามไฟล์โดยอัตโนมัติด้วย thumbs ที่มีอยู่ก่อน 2. ) เข้ากันได้กับรูปแบบไฟล์ทั้งหมดที่ระบุโดย thumbnailers ที่ติดตั้งไว้ล่วงหน้า


สคริปต์ทั้งสามนั้นยอดเยี่ยม แต่ละชุดมีข้อดีและข้อเสียที่แตกต่างกัน โซลูชันของ Rosch ทำงานนอกกรอบและอาจเป็นตัวเลือกที่เหมาะสมสำหรับผู้ใช้ที่มีการติดตั้งน้อยที่สุด

มาร์ตินออร์ดาสร้างสคริปต์เอนกประสงค์ที่ทำงานกับรูปแบบไฟล์ที่หลากหลายและไม่ขึ้นกับ DE มันยอดเยี่ยมที่คุณภาพรูปขนาดย่อ แต่ทำความเร็วเสีย

ในที่สุดมันก็เป็นโซลูชันของเจมส์ที่เหมาะกับเคสของฉันที่สุด มันรวดเร็วหลากหลายและมีตัวเลือกให้ข้ามไฟล์ด้วยภาพขนาดย่อที่มีอยู่ก่อนหน้า


ผู้ชนะโดยรวม: James Henstridge


ข้อมูลเพิ่มเติม : สคริปต์ทั้งสามนี้เข้ากันได้กับnautilus-สคริปต์อย่างสมบูรณ์ คุณสามารถติดตั้งได้อย่างง่ายดายโดยทำตามบทช่วยสอนนี้


แก้ไข 2 : อัปเดตบทวิจารณ์พร้อมสคริปต์ที่ปรับปรุงแล้วโดย rosch


เพราะไฟล์เล็ก ๆ จำนวนมากจบลงอย่างไม่ดีเสมอ คุณรู้ขนาดของโฟลเดอร์ ~ / .umbumbs ของคุณหรือไม่
แอนทอนโรดริเกซ

คุณหมายถึงขนาดนี้ใช่ไหม ประมาณ 85MB หลังจากใช้งานประมาณ 1 เดือน
Glutanimate

และไลบรารีของคุณมีไฟล์เท่าใด (สำหรับเหตุผล / ข้อ จำกัด ทางเทคนิค)
Antoine Rodriguez

เดี๋ยวก่อนฉันคาดคะเน ที่รวมถึงไฟล์ข้อมูลบางส่วน เอกสารเท่านั้นเกี่ยวกับ 2000
Glutanimate

เพียงเพื่ออัปเดตคุณ: ฉันมีทางออกสำหรับคุณ มันใช้เวลานานในการทำซ้ำดังนั้นอนุญาตให้ฉันสองสามวัน ขอแสดงความนับถือ;)
แอนทอนโรดริเกซ

คำตอบ:


35

รูทีนการย่อขนาดของ Nautilus จริง ๆ แล้วมาจากlibgnome-desktopไลบรารีดังนั้นจึงเป็นไปได้ที่จะเรียกใช้ thumbnailers เดียวกันภายนอกตัวจัดการไฟล์

API มีความซับซ้อนเล็กน้อย แต่สคริปต์ Python ต่อไปนี้ควรช่วย:

#!/usr/bin/python
import os
import sys

from gi.repository import Gio, GnomeDesktop

def make_thumbnail(factory, filename):
    mtime = os.path.getmtime(filename)
    # Use Gio to determine the URI and mime type
    f = Gio.file_new_for_path(filename)
    uri = f.get_uri()
    info = f.query_info(
        'standard::content-type', Gio.FileQueryInfoFlags.NONE, None)
    mime_type = info.get_content_type()

    if factory.lookup(uri, mtime) is not None:
        print "FRESH       %s" % uri
        return False

    if not factory.can_thumbnail(uri, mime_type, mtime):
        print "UNSUPPORTED %s" % uri
        return False

    thumbnail = factory.generate_thumbnail(uri, mime_type)
    if thumbnail is None:
        print "ERROR       %s" % uri
        return False

    print "OK          %s" % uri
    factory.save_thumbnail(thumbnail, uri, mtime)
    return True

def thumbnail_folder(factory, folder):
    for dirpath, dirnames, filenames in os.walk(folder):
        for filename in filenames:
            make_thumbnail(factory, os.path.join(dirpath, filename))

def main(argv):
    factory = GnomeDesktop.DesktopThumbnailFactory()
    for filename in argv[1:]:
        if os.path.isdir(filename):
            thumbnail_folder(factory, filename)
        else:
            make_thumbnail(factory, filename)

if __name__ == '__main__':
    sys.exit(main(sys.argv))

บันทึกสิ่งนี้ลงในไฟล์และทำเครื่องหมายว่าสามารถเรียกทำงานได้ คุณอาจต้องติดตั้งgir1.2-gnomedesktop-3.0แพ็คเกจหากยังไม่ได้ติดตั้ง

หลังจากนั้นให้เรียกใช้สคริปต์ด้วยไฟล์หรือโฟลเดอร์ที่คุณต้องการย่อขนาดเป็นอาร์กิวเมนต์ รูปขนาดย่อจะถูกบันทึกไว้ใน~/.thumbnailsตำแหน่งที่แอปพลิเคชั่นอย่าง Nautilus คาดว่าจะพบ


1
ขอบคุณเจมส์ที่สละเวลาเขียนบทนี้ มันทำงานเหมือนโฆษณาไฟล์เดียว ทางออกที่โพสต์นั้นเป็นเพียงระบบเดียวที่ระบบรู้จำผลลัพธ์ (ใช้ชื่อไฟล์ที่ถูกต้อง48eebea785a185cdfc9d8f1a2ed34400.png) ณ จุดนี้ดูเหมือนจะไม่สนับสนุนไดเรกทอรี มีวิธีที่คุณสามารถทำให้มันผ่านไดเรกทอรีซ้ำ?
Glutanimate

เสร็จสิ้น ฉันก็ลดความซับซ้อนของเอาต์พุตลงเล็กน้อยเช่นกัน
James Henstridge

สคริปต์ของคุณใช้งานได้ดีอย่างยิ่ง มันคือสิ่งที่ฉันกำลังมองหาดังนั้นฉันจึงมอบรางวัลให้คุณ ฉันพบข้อความแสดงข้อผิดพลาดขณะทำการทดสอบครั้งสุดท้าย แต่ดูเหมือนว่าพวกเขาไม่ได้ขัดขวางการสร้างภาพขนาดย่อ ข้อผิดพลาดอาจเกี่ยวข้องกับความจริงที่ว่าบางชื่อไฟล์รวมถึง German Umlauts ("ä, ü, ö") ขอขอบคุณอีกครั้งสำหรับการมอบโซลูชั่นที่ยอดเยี่ยมนี้ มันจะทำให้ชีวิตของฉันง่ายขึ้นมากจากนี้ไป
Glutanimate

1
ข้อผิดพลาดเหล่านั้นมาจากตัวแยกวิเคราะห์ XML ที่ใช้โดย thumbnailers ตัวใดตัวหนึ่งดังนั้นจะเกี่ยวข้องกับเนื้อหาของไฟล์บางไฟล์แทนที่จะเป็นชื่อ สคริปต์ thumbnailer ด้านบนจะประมวลผลไฟล์ทั้งหมดในไดเรกทอรีดังนั้นจึงอาจไม่ใช่ไฟล์ PDF ที่มีปัญหา
James Henstridge

ฉันไม่สามารถสร้างภาพขนาดย่อสำหรับไฟล์ข้อความธรรมดาได้ มีบางอย่างที่ฉันต้องกำหนดค่าเพื่อใช้งานได้หรือไม่
krasnaya

18

สคริปต์ด้านล่างควรทำงาน มันใช้evince-thumbnailerอันไหน - เท่าที่ฉันรู้ - มาพร้อมกับการติดตั้ง gnome ทุกอันและเป็น thumbnailer เริ่มต้น
บันทึกเป็น pdfthumbnailer.shและทำให้สามารถเรียกใช้งานได้
การใช้งาน :pdfthumbnailer.sh dir1 [dir2, ...]

#!/bin/bash

F1=$HOME/.thumbnails/normal
F2=$HOME/.cache/thumbnails/normal
SAVE_FOLDER=$F1
[ -e $F2 ] && SAVE_FOLDER=$F2

# the thumbnailing function
evincethumb() {
    outname=$(echo -n "$(readlink -f "$0")" | \
    perl -MURI::file -MDigest::MD5=md5_hex -ne 'print md5_hex(URI::file->new($_));')
    # no work if thumbnail already present
    [ ! -e $SAVE_FOLDER/${outname}.png ] && {
        echo "$0"
        #uncomment only one of both thumbnailers
        #convert -thumbnail 128x128 "$0"[0] $SAVE_FOLDER/${outname}.png 2>/dev/null
        evince-thumbnailer -s 128 "$0" $SAVE_FOLDER/${outname}.png 2>/dev/null
    }
}

# make our function visible to the subshell in "find -exec" below
export -f evincethumb

# loop through all given folders
for folder in "$@" ; do
    find "$folder" -type f -exec bash -c evincethumb {} \;
done

การ จำกัด :

  • ไม่ได้เพิ่มคุณสมบัติ Thumb :: URI และ Thumb :: MTime ให้กับภาพขนาดย่อตามที่ James Henstridge ชี้ จนถึงตอนนี้ฉันยังไม่เห็นหลักฐานที่แสดงว่าการผิดนัดevince-thumbnailerนั้นกำลังทำอยู่ กล่าวอีกนัยหนึ่ง .. ตราบใดที่ nautilus ไม่ได้สร้างรูปขนาดย่อที่สคริปต์สามารถใช้สำหรับงานได้

หมายเหตุ :

  • พิมพ์ชื่อของไฟล์เมื่อสร้างภาพย่อใหม่ข้ามการสร้างหากมีอยู่
  • ความเร็ว: ไฟล์ PDF 37 ไฟล์ทดสอบทั้งevince-thumbnailerและconvert(จาก imagemagick): 3 วินาทีสำหรับevince-thumbnailerและ 14 วินาทีสำหรับconvertสำหรับ
  • สร้างรูปขนาดย่อที่ได้รับการยอมรับโดย nautilus
  • ชื่อพา ธ ที่จัดการโดย perl URL: โมดูลไฟล์ (ช่องว่างและอักขระอื่น ๆ ได้รับการแปลอย่างถูกต้องในไฟล์ uri)
  • ความต้องการperlนำเสนอในการติดตั้งเริ่มต้น
  • ไฟล์ที่ไม่ถูกจัดการโดยevince-thumbnailerจะส่งออกข้อผิดพลาด - ปิดเสียงด้วย2>/dev/null
  • ดูที่บรรทัด MimeType /usr/share/thumbnailers/evince.thumbnailerเพื่อดูรายการประเภทไฟล์ที่จัดการ
  • การปรับปรุง: เริ่มต้นจาก 12.04 ~/.cache/thumbnailsแสดงภาพย่อโฟลเดอร์น่าจะเป็น เส้นทางที่มีประสิทธิภาพมากขึ้นโดยใช้
    readlink

แรงบันดาลใจ :
http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=683394


ก่อนอื่นขอขอบคุณสำหรับคำตอบและความพยายามของคุณ ฉันทำการทดสอบแล้วและนี่คือผลลัพธ์ของฉัน: 1. ) การสร้างภาพขนาดย่อไม่สามารถใช้ได้กับไดเรกทอรีที่มีช่องว่างในชื่อ 2. ) รูปขนาดย่อที่สร้างด้วยสคริปต์ของคุณและ @Martin Orda ไม่ได้รับการยอมรับจากระบบ ไฟล์ที่ประมวลผลด้วยสคริปต์ของคุณจะได้รับการจัดการราวกับไม่มีภาพขนาดย่อ -> ผลลัพธ์: นิ้วหัวแม่มือที่ซ้ำกันในไดเรกทอรีภาพขนาดย่อ
Glutanimate

อืมการทดสอบของฉันดีมากจนถึงตอนนี้: nautilus รู้จักรูปขนาดย่อและไม่ได้สร้างใหม่ อืม, ช่องว่างในชื่อโฟลเดอร์เป็นสิ่งที่ฉันพบว่าการฝึกฝนไม่ดี แต่ฉันจะแก้ไขสคริปต์ ทำซ้ำภาพขนาดย่อ? ชื่อไฟล์ของ tumbnail ใหม่สำหรับไฟล์ให้คืออะไร?
rosch

ตกลงลองอีกครั้งและฉันกลัวว่ามันจะเป็นผลลัพธ์เดียวกันกับครั้งที่แล้ว นี่คือชื่อไฟล์ภาพขนาดย่อที่สคริปต์ของคุณสร้างขึ้น:2a43dc2774e3dfe45a4337e0304e5b0a.pngนี่คือชื่อไฟล์ของภาพขนาดย่อสคริปต์ของคุณสร้างไปนี้:48eebea785a185cdfc9d8f1a2ed34400.pngนี่คือวิธีที่ภาพขนาดย่อที่เดียวกันคือการตั้งชื่อโดยหอยโข่ง: ฉันได้สังเกตเห็นด้วยว่านิ้วหัวแม่มือที่สร้างด้วยสคริปต์ของคุณนั้นมีขนาด 128x171px ในขณะที่ตัวสร้างภาพย่อขนาด inbuilt จะสร้างภาพขนาดย่อขนาด 96x128px เท่านั้น
Glutanimate

นี่คือการเปรียบเทียบนี่คือการเปรียบเทียบ
Glutanimate

เกี่ยวกับความคิดเห็นของคุณใน evince-thumbnailerไม่เพิ่มแท็ก PNG ที่ถูกต้อง: รหัสที่เรียกรูปขนาดย่อภายนอกจริง ๆ แล้วเขียนรูปภาพเพื่อรวมแท็ก คุณควรตรวจสอบสิ่งนี้ได้ด้วยการเรียกใช้strings -aภาพขนาดย่อที่สร้างโดย Nautilus
James Henstridge

10

เบี่ยงเบนความสนใจไปสักพักแล้วก็ทุบฉันลงไป :) ไม่ทราบว่ามี evince-thumbnailer อยู่ (ฉันไม่ใช่ผู้ใช้ Gnome) แต่ทว่าเนื่องจากฉันได้เขียนมันไปแล้ว มันต้องติดตั้ง imagemagick ตรวจสอบและติดตั้งหากไม่มี:

which convert || sudo apt-get install imagemagick

บันทึกเป็นmkthumb.sh(เช่น) chmod +x mkthumb.shมันและรันด้วยพา ธ สัมบูรณ์เป็นอาร์กิวเมนต์ (คุณสามารถใช้ -s เป็นพารามิเตอร์แรกเพื่อข้ามการสร้างภาพขนาดย่อที่มีอยู่แล้ว) เช่น:

user@host $ ./mkthumb.sh -s /home/user/Downloads /home/user/blah
Processing directory /home/user/Downloads/pics/
OK   /home/user/Downloads/pics/FeO08.jpg
OK   /home/user/Downloads/pics/UrOCu.jpg
OK   /home/user/Downloads/pics/34ATZ.gif
OK   /home/user/Downloads/pics/WBRE3.jpg
OK   /home/user/Downloads/pics/LjLdH.jpg
OK   /home/user/Downloads/pics/xvvae (1).jpg
SKIP /home/user/Downloads/pics/itcrowd.jpg
OK   /home/user/Downloads/pics/76180344.jpg
OK   /home/user/Downloads/pics/fgk5N.jpg
....

สคริปต์ (ฉันได้แก้ไขเล็กน้อยเพื่อรองรับภาพส่วนใหญ่คุณสามารถเพิ่มส่วนขยายเพิ่มเติมได้ถ้าต้องการ):

#!/bin/bash

# USAGE: mkthumb.sh [-s] <abs_path> [abs_path]
# create nautilus thumbnails for images and PDFs in the directories (and their
# sub-directories) given as parameters.
# -s is used to skip generating thumbnails that already exist

skip_existing=0
if [[ "${1}" == "-s" ]]; then
  skip_existing=1
  shift
fi

mkthumb() {
  file="${1}"
  dest="${2}"
  convert -thumbnail 128x128 "${file}[0]" "${dest}" &>/dev/null
  if (( $? == 0 )); then
    echo "OK   ${file}"
  else
    echo "FAIL ${file}"
  fi
}

OLDIFS="${IFS}"
IFS=$'\n'
for dir in $@; do
  realdir=`realpath "${dir}"`
  echo "Processing directory ${realdir}"
  for file in $(find "${realdir}" -regextype posix-egrep -iregex \
  '.*\.(pdf|png|jpg|gif|jpeg)'); do
    md5=$(echo -n "${file}" | perl -MURI::file -MDigest::MD5=md5_hex -ne \
          'print md5_hex(URI::file->new($_));')
    dest="${HOME}/.thumbnails/normal/${md5}.png"
    if [[ -f "${dest}" ]]; then
      if [[ "${skip_existing}" == "0" ]]; then
        mkthumb "${file}" "${dest}"
      else
        echo "SKIP ${file}"
      fi
    else
      mkthumb "${file}" "${dest}"
    fi
  done
done
IFS="${OLDIFS}"

มันจัดการไฟล์ที่มีช่องว่างในชื่อของพวกเขาโดยไม่มีปัญหา

A bit of testing here:

user@host $ find .thumbnails/
.thumbnails/
.thumbnails/fail
.thumbnails/fail/gnome-thumbnail-factory
.thumbnails/normal

# ok - no thumbnails present.

user@host $ ./mkthumb.sh -s /home/user/Downloads/pdf/test/
Processing directory /home/user/Downloads/pdf/test/
OK   /home/user/Downloads/pdf/test/800pdf.pdf
OK   /home/user/Downloads/pdf/test/3_TO_pricelist.pdf
OK   /home/user/Downloads/pdf/test/111011-speisekarte-mit-desserts.pdf
OK   /home/user/Downloads/pdf/test/1186157_r4f3a355eb104a (1).pdf

user@host $ touch tstamp

user@host $ ./mkthumb.sh -s /home/user/Downloads/pdf/test/
Processing directory /home/user/Downloads/pdf/test/
SKIP /home/user/Downloads/pdf/test/800pdf.pdf
SKIP /home/user/Downloads/pdf/test/3_TO_pricelist.pdf
SKIP /home/user/Downloads/pdf/test/111011-speisekarte-mit-desserts.pdf
SKIP /home/user/Downloads/pdf/test/1186157_r4f3a355eb104a (1).pdf

# running nautilus once now to see if it generates new thumbnails

# checking for new thumbnails:

user@host $ find .thumbnails/ -newer tstamp

# None.

ขอบคุณเช่นกันสำหรับการมอบบทที่ยอดเยี่ยม ฉันทำการทดสอบบางอย่างและนี่คือผลลัพธ์ของฉัน: 1. ) การสร้างภาพขนาดเล็กทำงานได้ดีและเร็วกว่า evince-thumbnailer; 2. ) รูปขนาดย่อที่สร้างขึ้นด้วยสคริปต์ของคุณและ @ rosch ไม่ได้รับการยอมรับจากระบบ ไฟล์ที่ประมวลผลด้วยสคริปต์ของคุณจะได้รับการจัดการราวกับว่าไม่มีภาพขนาดย่อ Thumbs ใหม่ถูกสร้างขึ้นเมื่อเข้าถึงไดเรกทอรีด้วยตนเอง -> ผลลัพธ์: Thumbs ที่ซ้ำกันในไดเรกทอรีภาพขนาดย่อ
Glutanimate

คุณถูกต้อง - ฉันตรวจสอบสิ่งนี้อีกครั้งและพบว่าหอยโข่งสร้างมันขึ้นมาอีกครั้ง (ฉันคิดว่านั่นไม่ใช่กรณีเมื่อฉันทดสอบมันเมื่อคืนนี้ แต่ฉันอาจผิดมันก็สายไปแล้ว) ถ้ามันเร็วกว่าที่คุณเขียน (ฉันยังไม่ได้ใช้วิธีการอื่น ๆ ) ฉันจะทำงานกับมันในเวลาไม่กี่ชั่วโมง ปัญหาเดียวที่ฉันพบคือไฟล์ทั้งสองที่สร้างโดยสคริปต์ของฉันและ nautilus แสดงคุณสมบัติเดียวกัน: "PNG 97x128 97x128 + 0 + 0 DirectClass 8 บิต 20.4KB 0.000u 0: 00.000" เมื่อฉันใช้การระบุ <thumbnail>
Marcin Kaminski

ไม่เราผิดทั้งคู่ :) ปรากฎว่าฉันลืมว่าชื่อไฟล์รูปขนาดย่อเป็นแฮช md5 ของ 'file: //' + absolute_path และเรียกใช้สคริปต์ของฉันในฐานะ. /mkthumb.sh -s Downloads / pdf / test แทน /mkthumb.sh -s / home / ผู้ใช้ / ดาวน์โหลด / pdf / ทดสอบ ลองลองอีกครั้ง
Marcin Kaminski

เอาล่ะฉันได้ทดสอบการทำงานอื่นและสิ่งที่แปลกคือทั้งสองของสคริปต์ Rosch ของคุณดูเหมือนจะมีปัญหาเดียวกัน: ชื่อไฟล์ที่มีสคริปต์ของคุณในขณะที่ชื่อหอยโข่งว่ามันเป็น2a43dc2774e3dfe45a4337e0304e5b0a.png 48eebea785a185cdfc9d8f1a2ed34400.pngอย่างไรก็ตามส่วนข้อมูลนั้นถูกต้องกับสคริปต์ของคุณ นี่คือการเปรียบเทียบ
Glutanimate

ฉันต้องการเพิ่มว่าสคริปต์ของคุณยังเป็นสคริปต์ที่โพสต์ได้เร็วที่สุดที่นี่ imagemagickดูเหมือนว่าจะจัดการกับการปรับขนาดได้ดีกว่าevince-thumbnailer(ดูการเปรียบเทียบด้านบนสำหรับการอ้างอิง)
Glutanimate

1

ข้อกำหนดคุณลักษณะภาพย่อประกอบด้วยที่เก็บภาพขนาดย่อที่ใช้ร่วมกันซึ่งอนุญาตให้เผยแพร่ภาพขนาดย่อที่สร้างล่วงหน้าพร้อมกับไฟล์ที่เกี่ยวข้องแทนที่จะให้ผู้ใช้ทุกคนสร้างภาพขนาดย่อของตนเอง ดังนั้นในทางทฤษฎีคุณสามารถสร้างภาพขนาดย่อและเพิ่มลงในที่เก็บข้อมูลที่ใช้ร่วมกันได้ดังนั้นจึงไม่จำเป็นต้องสร้างภาพขนาดย่อในอนาคตหากคุณลบไดเรกทอรีภาพขนาดย่อของคุณหรือย้ายภาพทั้งหมดไปยังเครื่องอื่นหรืออะไรก็ตาม

http://specifications.freedesktop.org/thumbnail-spec/thumbnail-spec-latest.html#DIRECTORY

หน้าถาม Ubuntu นี้เกิดขึ้นในผลลัพธ์ของการค้นหาเมื่อฉันพยายามค้นหาว่าแอปพลิเคชันใดรองรับที่เก็บภาพขนาดย่อที่แชร์หรือไม่ น่าเสียดายที่ไม่มีแอพพลิเคชั่นรองรับ


1

ฉันเขียนแพคเกจที่แก้ไขสคริปต์ของ James เพื่อรวมมัลติโปรเซสเซอร์และตัวเลือกในการสร้างภาพขนาดย่อซ้ำ ๆ แพคเกจ - pipติดตั้งได้ ตรวจสอบที่นี่สำหรับคำแนะนำในการติดตั้ง

ตัวอย่างการใช้งานคือ:

thumbgen -w 4 -r -d your_directory
  • -r: สร้างภาพขนาดย่อซ้ำ ๆ

  • -w: จำนวนแกนที่จะใช้

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.