Как я могу получить значок или миниатюру для определенного файла

1

Я ищу способ получить значок, связанный с определенным типом файла в Linux.

Либо используйте сценарий оболочки, либо питон.

Я предпочитаю собственный метод python, который работает на всех платформах, но метод сценария оболочки будет в порядке.

Теги:

4 ответа

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)

Спасибо всем

2

Спасибо @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

Я не думаю, что файлы значков одинаковы на разных платформах...

На Mac значки хранятся в комплекте приложений - EG:

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

В Linux они, похоже, находятся в подобном, но в другом месте EG:

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

Итак, я думаю, вам не повезло для простого кросс-платформенного решения, и вам придется закодировать процедуру, чтобы заглянуть в подходящее место для каждой ОС

-1

ImageMagick довольно хорош для базовых манипуляций из командной строки. Информация на http://www.imagemagick.org/script/index.php

  • 0
    Кажется, что этот пакет создает только миниатюры для изображений и редактирует изображения, может ли он генерировать миниатюры или иконки для mpg, ogg, mp3, zip, tar.gz?

Ещё вопросы

Сообщество Overcoder
Наверх
Меню