如何使用另一个文件手动为一个文件创建缩略图

如何使用另一个文件手动为一个文件创建缩略图

我使用 Clip Studio Paint 进行了很多绘画,它与 wine 的配合几乎完美,但唯一的主要缺点是原始文件的格式在 linux 中不支持缩略图(据我所知)。

对于大多数文件,我会有两个版本。File.clip(CSP 格式)和 File.png。我想使用 .png(或其缩略图)作为 File.clip 的缩略图。

那么,如何从命令行向随机文件添加缩略图?

我正在 ubuntu 18.04 和 nautilus 中工作。

编辑:更改了我想要做的事情的描述,以使其更清晰。

答案1

好的,据我理解,您正在尝试使用不同的文件(可预测创建)来创建文件的缩略图。

我们可以尝试这样的方法:

#!/bin/bash

# Based on CC-BY 2016 Marcin Kaminski https://askubuntu.com/users/98096/marcin-kaminski
# https://askubuntu.com/a/201894/216568

# USAGE: mkthumb.sh [-s] [-r] <path> [path]
# create nautilus thumbnails for clips 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

maxdepth="1"
if [[ "${1}" == "-r" ]]; then
    maxdepth="9999"
    shift
fi

mkImageThumb() {
    size="${3}"
    file="${1}"
    dest="${2}"
    convert -thumbnail ${size}x${size} "${file}[0]" "${dest}" &>/dev/null
    if (( $? == 0 )); then
        echo "OK   ${file} [${dest}]"
    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}" -maxdepth ${maxdepth} -regextype posix-egrep -iregex '.*\.clip'); do
        md5=$(echo -n "${file}" | perl -MURI::file -MDigest::MD5=md5_hex -ne 'print md5_hex(URI::file->new($_));')
        image=$(dirname "${file}")/$(basename "${file}" .clip).png
        dest="${HOME}/.cache/thumbnails/normal/${md5}.png"
        if [[ ! -f "${dest}" || "${skip_existing}" != "0" ]]; then
            mkImageThumb "${image}" "${dest}" 128
        else
            echo "SKIP ${file}"
        fi
        dest="${HOME}/.cache/thumbnails/large/${md5}.png"
        if [[ ! -f "${dest}" || "${skip_existing}" != "0" ]]; then
                mkImageThumb "${image}" "${dest}" 256
        else
            echo "SKIP ${file}"
        fi
    done
done
IFS="${OLDIFS}"

该脚本将获取整个目录并生成所需的缩略图(我现在还没有测试该脚本,但应该测试)。

相关内容