Я ищу способ получить значок, связанный с определенным типом файла в Linux.
Либо используйте сценарий оболочки, либо питон.
Я предпочитаю собственный метод python, который работает на всех платформах, но метод сценария оболочки будет в порядке.
Я нашел решение, и я написал функцию для выполнения задания
#!/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)
Спасибо всем
Спасибо @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))
Я не думаю, что файлы значков одинаковы на разных платформах...
На Mac значки хранятся в комплекте приложений - EG:
/Applications/Mail.app/Contents/Resources/app.icns
В Linux они, похоже, находятся в подобном, но в другом месте EG:
/usr/lib/firefox/icons/mozicon16.xpm
Итак, я думаю, вам не повезло для простого кросс-платформенного решения, и вам придется закодировать процедуру, чтобы заглянуть в подходящее место для каждой ОС
ImageMagick довольно хорош для базовых манипуляций из командной строки. Информация на http://www.imagemagick.org/script/index.php