【问题标题】:How Can I Get an Icon or thumbnail for a Specific file如何获取特定文件的图标或缩略图
【发布时间】:2012-02-08 23:33:46
【问题描述】:

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

使用 shell 脚本或 python。

我更喜欢适用于所有平台的原生 python 方法,但 shell 脚本方法也可以。

【问题讨论】:

    标签: python linux shell


    【解决方案1】:

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

    #!/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))
      

      【讨论】:

        【解决方案3】:

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

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

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

        在 Linux 中,它们似乎位于相似但不同的地方 EG:

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

        因此,我认为您对一个简单的跨平台解决方案很不走运,并且必须编写例程代码以查找每个操作系统的适当位置

        【讨论】:

          【解决方案4】:

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

          【讨论】:

          • 这个包好像只做图片的缩略图,编辑图片,能不能生成mpg,ogg,mp3,zip,tar.gz的缩略图或图标?
          猜你喜欢
          • 2010-09-30
          • 2012-08-04
          • 2020-08-03
          • 2015-01-22
          • 2012-12-16
          • 2013-08-12
          • 1970-01-01
          • 2020-10-27
          • 2018-10-28
          相关资源
          最近更新 更多