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