ruby SVGファイルを苹果机のアイコン形式ICNS(视网膜対応)に変换するだけ
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ruby SVGファイルを苹果机のアイコン形式ICNS(视网膜対応)に変换するだけ相关的知识,希望对你有一定的参考价值。
#!/usr/bin/env ruby
# svg2icns.rb
# Copyright (c) 2015 IGARASHI Makoto (raccy)
# This software is released under the MIT License.
# http://opensource.org/licenses/mit-license.php
# SVGファイルをMacのアイコン形式であるicnsに変換します。
# 作成されるicnsはRetina対応です。
# SVGファイルはあらかじめ正方形にしておいて下さい。
# そうじゃないと歪みます。
# 実行前に、"gem install rsvg2" しておいてください。
# 既存ファイルは問答無用で上書きされますので注意して下さい。
require "rsvg2"
PNG_ICONSET = {
16 => ["icon_16x16.png"],
32 => ["icon_16x16@2x.png", "icon_32x32.png"],
64 => ["icon_32x32@2x.png"],
128 => ["icon_128x128.png"],
256 => ["icon_128x128@2x.png", "icon_256x256.png"],
512 => ["icon_256x256@2x.png", "icon_512x512.png"],
1024 => ["icon_512x512@2x.png"],
}
def svg2iconset(svg_file, iconset_dir)
rsvg = RSVG::Handle.new_from_data(IO.read(svg_file))
PNG_ICONSET.each_pair do |size, png_list|
png_list.each do |png_file|
surface = Cairo::ImageSurface.new(Cairo::FORMAT_ARGB32, size, size)
context = Cairo::Context.new(surface)
context.scale(size.to_f / rsvg.width, size.to_f / rsvg.height)
context.render_rsvg_handle(rsvg)
File.open(File.join(iconset_dir, png_file), "wb") do |io|
surface.write_to_png(io)
end
end
end
end
def iconset2icns(iconset_dir)
system("iconutil -c icns '#{iconset_dir}'")
end
if $0 == __FILE__
if ARGV.size < 1
puts "svg2icns.rb - SVGファイルをICNSに変換するツール"
puts "使い方: ruby #{$0} svg_file"
exit 1
end
svg_file = ARGV[0]
svg_file_ext = File.extname(svg_file)
iconset_dir = File.join(File.dirname(svg_file),
File.basename(svg_file, svg_file_ext) + ".iconset")
unless svg_file_ext.downcase == ".svg"
warn "指定したファイルがSVGではないようです。"
exit 2
end
unless FileTest.file?(svg_file)
warn "ファイルが見つかりません。"
exit 2
end
unless FileTest.directory?(iconset_dir)
Dir.mkdir(iconset_dir)
end
svg2iconset(svg_file, iconset_dir)
iconset2icns(iconset_dir)
end
以上是关于ruby SVGファイルを苹果机のアイコン形式ICNS(视网膜対応)に変换するだけ的主要内容,如果未能解决你的问题,请参考以下文章
markdown SHIFT_JIS(CP932)のアップロードファイルを滑轨で読み込む
css ハンバーガーメニューのアイコン
ruby YAMLファイルを読み込んでハッシュにする
ruby 10KB以下のファイルをtrashedディレクトリに移动する
ruby PCAPファイルを読み込んで,分ごとのTCP / IPパケット数を出力する。
vbscript 复数のExcel的ファイルを1ファイルにまとめる的VBScript