如何获取特定文件的图标或缩略图

时间:2012-02-08 23:33:46

标签: python linux shell

我正在寻找一种方法来获取与Linux上某种文件类型相关联的图标。

使用shell脚本或python。

我更喜欢在所有平台上运行的本机python方法,但是shell脚本方法可以。

4 个答案:

答案 0 :(得分:5)

我找到了一个解决方案,并且我写了一个函数来完成这项工作

#!/usr/bin/env python
import gio, gtk, os

    def get_icon_filename(filename,size):
        #final_filename = "default_icon.png"
        final_filename = ""
        if os.path.isfile(filename):
            # Get the icon name
            file = gio.File(filename)
            file_info = file.query_info('standard::icon')
            file_icon = file_info.get_icon().get_names()[0]
            # Get the icon file path
            icon_theme = gtk.icon_theme_get_default()
            icon_filename = icon_theme.lookup_icon(file_icon, size, 0)
            if icon_filename != None:
                final_filename = icon_filename.get_filename()

        return final_filename


    print get_icon_filename("/home/el7r/Music/test.mp3",64)

感谢所有

答案 1 :(得分:3)

感谢@Ali_AlNoaimi的解决方案。我把它改成了python3和PyGI:

import os , gi
gi.require_version('Gtk', '3.0')
from gi.repository import Gio , Gtk


def get_thumbnail(filename,size):
    final_filename = ""
    if os.path.exists(filename):
        file = Gio.File.new_for_path(filename)
        info = file.query_info('standard::icon' , 0 , Gio.Cancellable())
        icon = info.get_icon().get_names()[0]

        icon_theme = Gtk.IconTheme.get_default()
        icon_file = icon_theme.lookup_icon(icon , size , 0)
        if icon_file != None:
            final_filename = icon_file.get_filename()
        return final_filename

print(get_thumbnail("/path/to/file",32))

答案 2 :(得分:2)

我不认为平台上的图标文件是相同的......

在Mac上,图标存储在应用程序包中 - EG:

/Applications/Mail.app/Contents/Resources/app.icns

在Linux中,他们似乎处于类似但不同的地方EG:

 /usr/lib/firefox/icons/mozicon16.xpm

所以,我认为你很难找到一个简单的跨平台解决方案,并且必须对例程进行编码以查看每个操作系统的适当位置

答案 3 :(得分:-2)

ImageMagick非常适合从命令行进行基本操作。 http://www.imagemagick.org/script/index.php

的信息