C 如何获取nautilus用于给定文件的缩略图?

C 如何获取nautilus用于给定文件的缩略图?,c,linux,thumbnails,gnome,C,Linux,Thumbnails,Gnome,Nautilus向我显示文件的缩略图,如果是图像,它将向我显示预览,如果是视频,它将显示视频中的一帧,如果是文档,它将向我显示应用程序图标 如何访问图像 我看到它们被缓存在~/.thumbnail/中,但是它们都被赋予了唯一的名称 缩略图文件名是文件名的md5。但是文件名 是图像的绝对URI(不带换行符) 所以你需要做: echo-n'file:///home/yuzem/pics/foo.jpg“| md5sum 如果它有空格,则需要将它们转换为“%20”,例如“foo bar.jpg” ec

Nautilus向我显示文件的缩略图,如果是图像,它将向我显示预览,如果是视频,它将显示视频中的一帧,如果是文档,它将向我显示应用程序图标

如何访问图像

我看到它们被缓存在
~/.thumbnail/
中,但是它们都被赋予了唯一的名称

缩略图文件名是文件名的md5。但是文件名 是图像的绝对URI(不带换行符)

所以你需要做:

echo-n'file:///home/yuzem/pics/foo.jpg“| md5sum

如果它有空格,则需要将它们转换为“%20”,例如“foo bar.jpg”

echo-n'file:///home/yuzem/pics/foo%20bar.jpg“| md5sum


在找到。另请参见链接自的文档。

我想您需要通过编程方式访问缩略图。你想用这个

我还没有找到一种方法来检查缩略图,如果它不存在,请选择应用程序图标,因此需要分两步执行。这里有一个示例(对不起,Python,我对C语言不太熟练):


用于计算缩略图路径的简单Python工具。作者,分享者。但是,请注意,此代码不会用空格或特殊字符转义文件名;这意味着此代码不适用于所有文件名

"""Get the thumbnail stored on the system.
Should work on any linux system following the desktop standards"""

import hashlib
import os

def get_thumbnailfile(filename):
    """Given the filename for an image, return the path to the thumbnail file.
    Returns None if there is no thumbnail file.
    """
    # Generate the md5 hash of the file uri
    file_hash = hashlib.md5('file://'+filename).hexdigest()

    # the thumbnail file is stored in the ~/.thumbnails/normal folder
    # it is a png file and name is the md5 hash calculated earlier
    tb_filename = os.path.join(os.path.expanduser('~/.thumbnails/normal'),
                               file_hash) + '.png'

    if os.path.exists(tb_filename):
        return tb_filename
    else:
        return None

if __name__ == '__main__':
    import sys
    if len(sys.argv) < 2:
        print('Usage:  get_thumbnail.py filename')
        sys.exit(0)

    filename = sys.argv[1]
    tb_filename = get_thumbnailfile(filename)

    if tb_filename:
        print('Thumbnail for file %s is located at %s' %(filename, tb_filename))
    else:
        print('No thumbnail found')
“”“获取存储在系统上的缩略图。
应在任何遵循桌面标准的linux系统上工作“”
导入hashlib
导入操作系统
def get_缩略图文件(文件名):
“”“给定图像的文件名,返回缩略图文件的路径。
如果没有缩略图文件,则返回None。
"""
#生成文件uri的md5哈希
file_hash=hashlib.md5('file://'+filename).hexdigest()
#缩略图文件存储在~/.thumbnails/normal文件夹中
#它是一个png文件,名称是前面计算的md5哈希
tb_filename=os.path.join(os.path.expanduser(“~/.thumbnails/normal”),
文件(散列)+'.png'
如果os.path.exists(tb_文件名):
返回tb_文件名
其他:
一无所获
如果uuuu name uuuuuu='\uuuuuuu main\uuuuuuu':
导入系统
如果len(系统argv)<2:
打印('用法:获取\u缩略图.py文件名')
系统出口(0)
filename=sys.argv[1]
tb_filename=获取_缩略图文件(文件名)
如果tb_文件名:
打印('文件%s的缩略图位于%s'(文件名,tb_文件名))
其他:
打印('未找到缩略图')

当缩略图不存在时,强制生成的机制是什么?不仅需要对空格进行编码!例如,
[
]
需要变成
%5B
%5D
。见标准。您可能希望为此使用库/API/框架。搜索“uri编码”。(JavaScript有一个简单的例子)。
"""Get the thumbnail stored on the system.
Should work on any linux system following the desktop standards"""

import hashlib
import os

def get_thumbnailfile(filename):
    """Given the filename for an image, return the path to the thumbnail file.
    Returns None if there is no thumbnail file.
    """
    # Generate the md5 hash of the file uri
    file_hash = hashlib.md5('file://'+filename).hexdigest()

    # the thumbnail file is stored in the ~/.thumbnails/normal folder
    # it is a png file and name is the md5 hash calculated earlier
    tb_filename = os.path.join(os.path.expanduser('~/.thumbnails/normal'),
                               file_hash) + '.png'

    if os.path.exists(tb_filename):
        return tb_filename
    else:
        return None

if __name__ == '__main__':
    import sys
    if len(sys.argv) < 2:
        print('Usage:  get_thumbnail.py filename')
        sys.exit(0)

    filename = sys.argv[1]
    tb_filename = get_thumbnailfile(filename)

    if tb_filename:
        print('Thumbnail for file %s is located at %s' %(filename, tb_filename))
    else:
        print('No thumbnail found')