├── bin
├── id3thumb
├── convert_to_pdf
├── waveform
├── audiothumb
└── thumbnailer
├── mkrelease.rb
├── lib
├── thumbnailer.rb
└── thumbnailer
│ └── icons
│ ├── audio.svg
│ ├── application-ogg.svg
│ ├── default.svg
│ ├── application.svg
│ ├── application-x-executable.svg
│ ├── application-x-ms-dos-executable.svg
│ ├── video.svg
│ ├── application-vnd.rn-realmedia-vbr.svg
│ ├── application-vnd.rn-realmedia.svg
│ ├── application-x-shockwave-flash.svg
│ ├── application-vnd.rn-realmedia-secure.svg
│ ├── image.svg
│ ├── application-x-killustrator.svg
│ └── text-x-vcard.svg
├── run_to_check_dependencies.rb
├── INSTALL
└── README
/bin/id3thumb:
--------------------------------------------------------------------------------
1 | #!/usr/bin/ruby
2 | retried = false
3 | begin
4 | require 'id3lib'
5 | rescue LoadError => e
6 | raise if retried
7 | retried = true
8 | begin
9 | require 'rubygems'
10 | rescue LoadError
11 | raise e
12 | end
13 | retry
14 | end
15 |
16 | def extract_pic(filename)
17 | t = ID3Lib::Tag.new(filename)
18 | pic = t.find{|f| f[:id] == :APIC }
19 | pic
20 | end
21 |
22 | filename = ARGV.shift
23 | pic = extract_pic(filename)
24 | if pic and pic[:data]
25 | STDOUT.write(pic[:data])
26 | else
27 | exit!(1)
28 | end
29 |
--------------------------------------------------------------------------------
/mkrelease.rb:
--------------------------------------------------------------------------------
1 | #!/usr/bin/ruby
2 |
3 | url = "http://dark.fhtr.org/repos"
4 | libname = 'thumbnailer'
5 |
6 | $LOAD_PATH.unshift "lib"
7 | require "./lib/#{libname}.rb"
8 | require 'fileutils'
9 |
10 | version = Thumbnailer::VERSION
11 |
12 | dn = "#{libname}-#{version}"
13 | FileUtils.mkdir(dn)
14 | %w(lib bin README INSTALL LICENSE setup.rb).each{|fn|
15 | FileUtils.cp_r(fn, dn)
16 | }
17 | `tar zcf #{dn}.tar.gz #{dn}`
18 | FileUtils.rm_r(dn)
19 | s = <<-EOF
20 | tarball: #{url}/#{libname}/#{dn}.tar.gz
21 | git: #{url}/#{libname}
22 |
23 |
24 | #{File.read('README')}
25 | EOF
26 | File.open("release_msg-#{version}.txt", "w"){|f| f.write s}
27 |
--------------------------------------------------------------------------------
/lib/thumbnailer.rb:
--------------------------------------------------------------------------------
1 | # Thumbnailer - create thumbnails of files.
2 | # Copyright (C) 2007 Ilmari Heikkinen
3 | #
4 | # This program is free software: you can redistribute it and/or modify
5 | # it under the terms of the GNU General Public License as published by
6 | # the Free Software Foundation, either version 3 of the License, or
7 | # (at your option) any later version.
8 | #
9 | # This program is distributed in the hope that it will be useful,
10 | # but WITHOUT ANY WARRANTY; without even the implied warranty of
11 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 | # GNU General Public License for more details.
13 | #
14 | # You should have received a copy of the GNU General Public License
15 | # along with this program. If not, see .
16 |
17 | was_disabled = GC.disable
18 | require 'thumbnailer/thumbnailer'
19 |
20 | module Thumbnailer
21 | VERSION = "1.0"
22 | end
23 | GC.enable unless was_disabled
--------------------------------------------------------------------------------
/bin/convert_to_pdf:
--------------------------------------------------------------------------------
1 | #!/usr/bin/ruby
2 |
3 | GC.disable
4 |
5 | require 'thumbnailer'
6 |
7 | usage = "#{$0} SRC DST"
8 | if ARGV.size != 2 || !File.exist?(ARGV[0])
9 | STDERR.puts usage
10 | exit 1
11 | end
12 | src,dst = ARGV[0,2]
13 |
14 | mt = src.to_pn.mimetype
15 | converter = case mt.to_s
16 | when /[-\/]dvi$/
17 | "dvi"
18 | when /postscript/
19 | "postscript"
20 | when /^text/
21 | "text"
22 | when /powerpoint|vnd\.oasis\.opendocument|msword|vnd\.openxml|ms-excel|rtf|x-tex|template|stardivision|comma-separated-values|dbf|vnd\.sun\.xml/
23 | "unoconv"
24 | else
25 | nil
26 | end
27 |
28 | unless converter
29 | STDERR.puts "No converter found for #{src} (#{mt}) -> #{dst}"
30 | exit 2
31 | end
32 |
33 | tries = 3
34 | while tries > 0
35 | tries -= 1
36 | mt.__send__(converter + "_to_pdf", src, dst)
37 | break if File.exist?(dst) and File.size(dst) > 0
38 | STDERR.puts "Failed to convert #{src} to #{dst}, retrying."
39 | end
40 |
41 | if !File.exist?(dst) or File.size(dst) == 0
42 | File.unlink(dst) if File.exist?(dst)
43 | STDERR.puts "Conversion failed for #{src} (#{mt}) -> #{dst}"
44 | exit 4
45 | end
46 |
--------------------------------------------------------------------------------
/run_to_check_dependencies.rb:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env ruby
2 |
3 | out = STDOUT.clone
4 | STDOUT.reopen "/dev/null"
5 | STDERR.reopen "/dev/null"
6 |
7 | $missing = []
8 |
9 | def check(name, args, deb_package, expected = 0)
10 | system("#{name} #{args}")
11 | $missing << [name, deb_package] if $?.exitstatus != expected
12 | end
13 |
14 | check("convert", "-help", "imagemagick", 0)
15 | check("dcraw", "-v", "dcraw", 1)
16 | check("ffmpeg", "-h", "ffmpeg", 0)
17 | check("rsvg-convert", "--help", "librsvg2-bin", 0)
18 | check("test -n $(echo 'package require snack' | tclsh)", "", "libsnack2", 0)
19 | check("mplayer", "-v", "mplayer", 0)
20 | check("paps", "-?", "paps", 0)
21 | check("pdftoppm", "-v", "poppler-utils", 99)
22 | check("ps2pdf", "-h", "ghostscript", 1)
23 | check("unoconv", "-h", "python-uno (and unoconv)", 1)
24 | check("xvfb-run", "-h", "xvfb", 0)
25 | check("swfdec-thumbnailer", "-h", "swfdec-gnome", 0)
26 | check("sidplay2", "-h", "sidplay", 0)
27 |
28 | check("ruby -rimlib2", "-e nil", "libimlib2-ruby")
29 |
30 | $missing.each{|name, pkg| out.puts "Missing #{name} to be found in #{pkg}." }
31 | out.puts "All dependencies found." if $missing.empty?
32 |
33 | exit($missing.empty?)
34 |
--------------------------------------------------------------------------------
/bin/waveform:
--------------------------------------------------------------------------------
1 | #!/usr/bin/wish
2 |
3 | if { $argc != 2 && $argc != 1 } {
4 | puts "USAGE: waveform SOUNDFILE PNGFILE"
5 | } else {
6 | package require snack
7 | package require Img
8 |
9 | set colormap {#000 #006 #00B #00F #03F #07F #0BF #0FF #0FB #0F7 #0F0 #3F0 #7F0 #BF0 #FF0 #FB0 #F70 #F30 #F00}
10 |
11 | snack::sound s -load [lindex $argv 0]
12 |
13 | set len [s length -unit SECONDS]
14 | set w [expr {int(($len / 300.0) * 512.0)}]
15 | set h [expr {int((512.0 * (512.0 / $w)))}]
16 | if { $w > 512 } {
17 | set w [expr {512}]
18 | }
19 | if { $h > 512 } {
20 | set h [expr {512}]
21 | }
22 | set wh [expr {int(($h * 0.25))}]
23 | set sh [expr {$h - $wh}]
24 |
25 | canvas .c -bg #000 -width $w -height $h
26 | pack .c
27 |
28 | .c create waveform 0 0 -sound s -width $w -height $wh -fill #08B
29 | .c create spectrogram 0 $wh -sound s -width $w -height $sh -colormap $colormap
30 | update
31 |
32 | if { $argc == 2 } {
33 | raise .
34 | set img [image create photo -format window -data .c]
35 | $img write [lindex $argv 1] -format PNG
36 | #.c postscript -file [lindex $argv 1] -width 514 -height 130 -x 0.0 -y 0.0
37 | exit
38 | }
39 | }
40 |
--------------------------------------------------------------------------------
/bin/audiothumb:
--------------------------------------------------------------------------------
1 | #!/usr/bin/ruby
2 |
3 | require 'imlib2'
4 | if di = ARGV.index("-display")
5 | ARGV.delete_at(di)
6 | display = ARGV[di]
7 | ARGV.delete_at(di)
8 | end
9 |
10 | if ARGV.size != 2
11 | puts "USAGE: audiothumb AUDIOFILE PNGFILE"
12 | else
13 | tmpfile = "/tmp/audiofile-temp-#{Process.pid}-#{Time.now.to_f}.png"
14 | tmpfile2 = "/tmp/audiofile-temp2-#{Process.pid}-#{Time.now.to_f}.png"
15 | if display
16 | system("waveform", "-display", display, ARGV[0], tmpfile)
17 | else
18 | system("waveform", ARGV[0], tmpfile)
19 | end
20 | if File.exist?(tmpfile)
21 | wf = Imlib2::Image.load(tmpfile)
22 | end
23 | thumb = `id3thumb #{ARGV[0].dump}`
24 | if thumb.size > 0
25 | File.open(tmpfile2, 'w'){|f|
26 | f.write thumb
27 | }
28 | tf = Imlib2::Image.load(tmpfile2)
29 | end
30 | File.unlink(tmpfile) if File.exist?(tmpfile)
31 | File.unlink(tmpfile2) if File.exist?(tmpfile2)
32 | if wf and tf
33 | image = Imlib2::Image.new(256,512)
34 | image.has_alpha = true
35 | image.clear_color!(Imlib2::Color::TRANSPARENT)
36 | larger = [tf.width, tf.height].max
37 | tw = (tf.width / larger.to_f) * 256
38 | th = (tf.height / larger.to_f) * 256
39 | image.blend!(tf,
40 | 0, 0, tf.width, tf.height,
41 | (image.width-tw)/2, 0, tw, th
42 | )
43 | larger = [wf.width, wf.height].max
44 | ww = (wf.width / larger.to_f) * 256
45 | wh = (wf.height / larger.to_f) * 256
46 | image.blend!(wf,
47 | 0, 0, wf.width, wf.height,
48 | (image.width-ww)/2, th, ww, wh
49 | )
50 | if th + wh < 512
51 | image.crop!(0,0, 256, th+wh)
52 | end
53 | image.save(ARGV[1])
54 | elsif wf
55 | wf.save(ARGV[1])
56 | elsif tf
57 | tf.save(ARGV[1])
58 | else
59 | exit!(1)
60 | end
61 | end
62 |
--------------------------------------------------------------------------------
/bin/thumbnailer:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env ruby
2 |
3 | # Thumbnailer - create thumbnails of files.
4 | # Copyright (C) 2007 Ilmari Heikkinen
5 | #
6 | # This program is free software: you can redistribute it and/or modify
7 | # it under the terms of the GNU General Public License as published by
8 | # the Free Software Foundation, either version 3 of the License, or
9 | # (at your option) any later version.
10 | #
11 | # This program is distributed in the hope that it will be useful,
12 | # but WITHOUT ANY WARRANTY; without even the implied warranty of
13 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 | # GNU General Public License for more details.
15 | #
16 | # You should have received a copy of the GNU General Public License
17 | # along with this program. If not, see .
18 |
19 | GC.disable
20 |
21 | require 'optparse'
22 | require 'thumbnailer'
23 |
24 | options = {:crop => '0x0+0+0'}
25 | opts = OptionParser.new do |opts|
26 | opts.banner = "USAGE: #{$0} [options] input_filename thumbnail_filename"
27 |
28 | opts.separator ""
29 | opts.on("-h", "--help", "Show this message"){ puts opts.help; exit!(0) }
30 | opts.on("-s", "--size SIZE", Integer, "Max dimension of output image"){|p|
31 | options[:size] = p.to_i
32 | }
33 | opts.on("-i", "--input-type TYPE", "Input file mimetype (overrides auto-detect)"){|p|
34 | options[:input_type] = p
35 | }
36 | # opts.on("-o", "--output-type TYPE", "Output image type (overrides filename)"){|p|
37 | # options[:output_type] = p }
38 | opts.on("-c", "--crop CROP", "Crop rectangle (WxH+X+Y)"){|p|
39 | options[:crop] = p
40 | }
41 | opts.on("-n", "--no-icon", "Don't use icon fallback."){|p|
42 | options[:no_icon] = true
43 | }
44 | opts.on("-p", "--page PAGENUM", Integer, "Page to thumbnail (time for videos)"){|p|
45 | options[:page] = (p =~ /\./ ? p.to_f : p.to_i)
46 | }
47 | opts.on("--inexisting", "Try thumbnailing even if the file doesn't exist"){
48 | options[:allow_inexisting] = true
49 | }
50 | opts.on("-k", "--keep-temp", "Don't delete temp PDF files"){|p| Thumbnailer.keep_temp = true }
51 | opts.on("--pdf FILENAME", "Use given filename as temp PDF file"){|p| Thumbnailer.temp_pdf_filename = p.to_pn }
52 | opts.on("-q", "Don't print error messages"){|p| Thumbnailer.quiet = Metadata.quiet = true }
53 | opts.on("-v", "Verbose output to stderr"){|p| Thumbnailer.verbose = Metadata.verbose = true }
54 | end
55 |
56 |
57 | begin
58 | opts.parse!(ARGV)
59 | rescue => e
60 | STDERR.puts e.message
61 | STDERR.puts opts.help
62 | exit!(1)
63 | end
64 |
65 | filenames = ARGV
66 |
67 | if filenames.size != 2
68 | puts opts.banner
69 | exit!(1)
70 | end
71 |
72 | infile, outfile = ARGV[0,2]
73 |
74 | if File.exist?(infile) || options[:allow_inexisting]
75 | if options[:input_type]
76 | mt = Mimetype[options[:input_type]]
77 | else
78 | mt = infile.to_pn.mimetype
79 | end
80 | mt.thumbnail(
81 | infile, outfile, options[:size], options[:page], options[:crop], !options[:no_icon]
82 | )
83 | else
84 | STDERR.puts("File does not exist: #{infile}") unless Thumbnailer.quiet
85 | exit!(2)
86 | end
87 |
--------------------------------------------------------------------------------
/INSTALL:
--------------------------------------------------------------------------------
1 | Installing Programs with setup.rb
2 | =================================
3 |
4 | Quick Start
5 | -----------
6 |
7 | Type this (You might needs super user previledge):
8 |
9 | ($ su)
10 | # ruby setup.rb
11 |
12 | If you want to install a program in to your home directory
13 | ($HOME), use following instead:
14 |
15 | $ ruby setup.rb all --prefix=$HOME
16 |
17 |
18 | Detailed Installtion Process
19 | ----------------------------
20 |
21 | setup.rb invokes installation by three steps. There are
22 | "config", "setup" and "install". You can invoke each steps
23 | separately as following:
24 |
25 | $ ruby setup.rb config
26 | $ ruby setup.rb setup
27 | # ruby setup.rb install
28 |
29 | You can controll installation process by giving detailed
30 | options for each tasks. For example, --bin-dir=$HOME/bin
31 | let setup.rb install commands in $HOME/bin.
32 |
33 | For details, see "Task Options".
34 |
35 | Global Options
36 | --------------
37 |
38 | "Global Option" is a command line option which you can use
39 | for all tasks. You must give a global option before any task
40 | name.
41 |
42 | -q,--quiet
43 | suppress message outputs
44 | --verbose
45 | output messages verbosely (default)
46 | -h,--help
47 | prints help and quit
48 | -v,--version
49 | prints version and quit
50 | --copyright
51 | prints copyright and quit
52 |
53 | Tasks
54 | -----
55 | These are acceptable tasks:
56 | all
57 | Invokes `config', `setup', then `install'.
58 | Task options for all is same with config.
59 | config
60 | Checks and saves configurations.
61 | show
62 | Prints current configurations.
63 | setup
64 | Compiles ruby extentions.
65 | install
66 | Installs files.
67 | clean
68 | Removes created files.
69 | distclean
70 | Removes all created files.
71 |
72 | Task Options for CONFIG/ALL
73 | ---------------------------
74 |
75 | --prefix=PATH
76 | a prefix of the installing directory path
77 | --stdruby=PATH
78 | the directory for standard ruby libraries
79 | --siterubycommon=PATH
80 | the directory for version-independent non-standard
81 | ruby libraries
82 | --siteruby=PATH
83 | the directory for non-standard ruby libraries
84 | --bindir=PATH
85 | the directory for commands
86 | --rbdir=PATH
87 | the directory for ruby scripts
88 | --sodir=PATH
89 | the directory for ruby extentions
90 | --datadir=PATH
91 | the directory for shared data
92 | --rubypath=PATH
93 | path to set to #! line
94 | --rubyprog=PATH
95 | the ruby program using for installation
96 | --makeprog=NAME
97 | the make program to compile ruby extentions
98 | --without-ext
99 | forces to setup.rb never to compile/install
100 | ruby extentions.
101 | --rbconfig=PATH
102 | your rbconfig.rb to load
103 |
104 | You can view default values of these options by typing
105 |
106 | $ ruby setup.rb --help
107 |
108 |
109 | If there's the directory named "packages",
110 | You can also use these options:
111 | --with=NAME,NAME,NAME...
112 | Package names which you want to install.
113 | --without=NAME,NAME,NAME...
114 | Package names which you do not want to install.
115 |
116 | [NOTE] You can pass options for extconf.rb like this:
117 |
118 | ruby setup.rb config -- --with-tklib=/usr/lib/libtk-ja.so.8.0
119 |
120 |
121 | Task Options for INSTALL
122 | ------------------------
123 |
124 | --no-harm
125 | prints what to do and done nothing really.
126 | --prefix=PATH
127 | The prefix of the installing directory path.
128 | This option may help binary package maintainers.
129 | A default value is an empty string.
130 |
--------------------------------------------------------------------------------
/README:
--------------------------------------------------------------------------------
1 | Description
2 | -----------
3 |
4 | This package `Thumbnailer' comes with a library called `thumbnailer' and
5 | a program called `thumbnailer'.
6 |
7 | The thumbnailer library uses external thumbnailing programs to create an
8 | image of wanted size from a given file. Supported output formats are PNG
9 | and JPEG.
10 |
11 | As my own use for the thumbnailer is as a source of mipmapped textures,
12 | the default behaviour is to create a full-size thumbnail. E.g. if you
13 | have a 3039x2014 camera raw, you'll get a 3039x2014 jpeg or png out. For
14 | PDFs and videos, the default size is 2048px on the longest side.
15 |
16 |
17 | Usage
18 | -----
19 |
20 | # create a full-size jpeg thumbnail
21 | $ thumbnailer foo.png foo.jpg
22 | $ thumbnailer bar.avi foo.jpg
23 |
24 | # create a png thumbnail that's scaled to fit in a 1024x1024 square
25 | $ thumbnailer -s 1024 foo.pdf foo_thumb.png
26 |
27 |
28 | irb> require 'thumbnailer'
29 |
30 | # fit the jpg inside a 256x256 square
31 | irb> Thumbnailer.thumbnail("foo.png", "foo_thumb.jpg", 256)
32 |
33 | # page five of the pdf
34 | irb> Thumbnailer.thumbnail("bar.pdf", "bar_thumb.png", 2048, 5)
35 |
36 | # take the main thumbnail at 30 seconds into the video
37 | irb> Thumbnailer.thumbnail("qux.avi", "qux_thumb.jpg", 1024, 30)
38 |
39 |
40 | List of supported formats
41 | -------------------------
42 |
43 | Images
44 | Most image formats. PSDs probably not too accurately.
45 |
46 | Successfully tested:
47 | jpg, png, gif, svg,
48 | orf, nef, dng, crw, arw, raf, pef, cr2,
49 | tif, xpm, ppm, tga, pcx, bmp,
50 | psd
51 |
52 | Uses image icon:
53 | xcf
54 |
55 | Uses default icon:
56 | ai, exr
57 |
58 |
59 | Videos
60 | Anything mplayer / ffmpeg can play.
61 |
62 | Successfully tested:
63 | mkv, flv, avi, mpg, mov, wmv, ogg
64 |
65 |
66 | Audio
67 | Anything mplayer can play.
68 |
69 | The audio thumbnailing system is a wee bit peculiar. It relies
70 | on a Tcl/Tk app to create a waveform and spectrogram of the audio.
71 |
72 | Successfully tested:
73 | mp3, wav, m4a, flac, ra, ogg, wma
74 |
75 | Uses audio icon:
76 | ape
77 |
78 |
79 | Documents
80 | The document thumbnailer first converts the document into a PDF, then
81 | thumbnails the PDF. The PDF conversion requires ooffice for office
82 | documents.
83 |
84 | The HTML thumbnailer uses GtkMozEmbed.
85 |
86 | Successfully tested:
87 | pdf, html, ps, ps.gz, txt, sxi, odp, ppt, doc, xls
88 |
89 | Uses default icon:
90 | chm
91 |
92 |
93 | Others
94 | Thumbnailer uses a mimetype-specific icon from its icons-directory.
95 | If there's an SVG icon, the SVG icon will be used. Otherwise a PNG icon
96 | will be used.
97 |
98 | Successfully tested:
99 | directory, bz2, rar, tar.gz, ttf
100 |
101 | Uses default icon:
102 | sis, torrent, rb
103 |
104 |
105 | Requirements
106 | ------------
107 |
108 | * Ruby 1.8
109 |
110 | * Metadata library for Ruby
111 | http://github.com/kig/metadata/tree/master
112 |
113 | * Tons of image converter programs and shared-mime-info.
114 | http://freedesktop.org/wiki/Software/shared-mime-info
115 | List of debian packages:
116 | inkscape
117 | xvfb
118 | openoffice.org
119 | python-uno
120 | libimlib2-ruby
121 | netpbm
122 | paps
123 | gs-common
124 | imagemagick
125 | mplayer
126 | ffmpeg
127 | libsnack2
128 | poppler-utils (v0.6 or later, http://poppler.freedesktop.org/)
129 |
130 | * You need the latest version of dcraw to handle some camera raw images.
131 | http://cybercom.net/~dcoffin/dcraw/
132 |
133 | * You need unoconv for thumbnailing office documents:
134 | http://dag.wieers.com/home-made/unoconv/
135 |
136 |
137 | Install
138 | -------
139 |
140 | De-compress archive and enter its top directory.
141 | Then type:
142 |
143 | ($ su)
144 | # ruby setup.rb
145 |
146 | These simple step installs this program under the default
147 | location of Ruby libraries. You can also install files into
148 | your favorite directory by supplying setup.rb some options.
149 | Try "ruby setup.rb --help".
150 |
151 |
152 | License
153 | -------
154 |
155 | GPL v3
156 |
157 |
158 | Ilmari Heikkinen
159 |
--------------------------------------------------------------------------------
/lib/thumbnailer/icons/audio.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
180 |
--------------------------------------------------------------------------------
/lib/thumbnailer/icons/application-ogg.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
180 |
--------------------------------------------------------------------------------
/lib/thumbnailer/icons/default.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
178 |
--------------------------------------------------------------------------------
/lib/thumbnailer/icons/application.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
178 |
--------------------------------------------------------------------------------
/lib/thumbnailer/icons/application-x-executable.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
178 |
--------------------------------------------------------------------------------
/lib/thumbnailer/icons/application-x-ms-dos-executable.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
178 |
--------------------------------------------------------------------------------
/lib/thumbnailer/icons/video.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
318 |
--------------------------------------------------------------------------------
/lib/thumbnailer/icons/application-vnd.rn-realmedia-vbr.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
318 |
--------------------------------------------------------------------------------
/lib/thumbnailer/icons/application-vnd.rn-realmedia.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
318 |
--------------------------------------------------------------------------------
/lib/thumbnailer/icons/application-x-shockwave-flash.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
318 |
--------------------------------------------------------------------------------
/lib/thumbnailer/icons/application-vnd.rn-realmedia-secure.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
318 |
--------------------------------------------------------------------------------
/lib/thumbnailer/icons/image.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
--------------------------------------------------------------------------------
/lib/thumbnailer/icons/application-x-killustrator.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
--------------------------------------------------------------------------------
/lib/thumbnailer/icons/text-x-vcard.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
368 |
--------------------------------------------------------------------------------