2017-01-03 7 views
0

ImageMagickを使用してsvgファイルをicoに一括変換しようとしています。しかし、私が現在使用しているコマンドは、SVGの背景透明性を保持していません。ここSVGを透明な背景のICOに変換する

mogrify -background transparent -format ico -density 600 -define icon:auto-resize=128,64,48,32,16 *.svg 

(アプリケーションスケッチを使用してエクスポート)SVGsの一つのコードである:

<?xml version="1.0" encoding="UTF-8" standalone="no"?> 
<svg width="40px" height="40px" viewBox="0 0 40 40" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> 
    <!-- Generator: Sketch 41.2 (35397) - http://www.bohemiancoding.com/sketch --> 
    <title>Add</title> 
    <desc>Created with Sketch.</desc> 
    <defs> 
     <polygon id="path-1" points="0 40 40 40 40 0 0 0"></polygon> 
    </defs> 
    <g stroke="none" stroke-width="1" fill="none" fill-rule="evenodd"> 
     <g> 
      <g> 
       <g> 
        <g transform="translate(20.000000, 20.000000) scale(1, -1) translate(-20.000000, -20.000000) "> 
         <g> 
          <g> 
           <mask id="mask-2" fill="white"> 
            <use xlink:href="#path-1"></use> 
           </mask> 
           <g></g> 
           <g mask="url(#mask-2)"> 
            <g transform="translate(-0.250000, 1.250000)"> 
             <g stroke-width="1" fill="none" transform="translate(0.075125, 8.043250)"> 
              <path d="M1.5,3.75 C0.765,3.75 0.175,3.06625 0.175,2.20875 C0.175,1.345 0.765,0.64875 1.5,0.64875 L12.49,0.64875 C13.22125,0.64875 13.825,1.345 13.825,2.20875 C13.825,3.06625 13.22125,3.75 12.49,3.75" fill="#8C8C8C"></path> 
             </g> 
             <g stroke-width="1" fill="none" transform="translate(0.058000, 24.804125)"> 
              <path d="M1.5,3.75 C0.775,3.75 0.1925,3.06625 0.1925,2.20875 C0.1925,1.345 0.775,0.64875 1.5,0.64875 L12.84125,0.64875 C13.56375,0.64875 12.88625,1.43125 12.88625,2.29375 C12.88625,3.1525 13.56375,3.75 12.84125,3.75" fill="#8C8C8C"></path> 
             </g> 
             <g stroke-width="1" fill="none" transform="translate(29.431125, 16.666875)"> 
              <path d="M1.5,3.75 C0.765,3.75 0.175,3.06625 0.175,2.20875 C0.175,1.345 0.765,0.6475 1.5,0.6475 L9.43375,0.6475 C10.16625,0.6475 10.76875,1.345 10.76875,2.20875 C10.76875,3.06625 10.16625,3.75 9.43375,3.75" fill="#444443"></path> 
             </g> 
             <g stroke-width="1" fill="none" transform="translate(12.898875, 0.017750)"> 
              <path d="M0,37.5 L0,0 C0,0 17.37,1.91625 17.37,17.925 C17.37,35.7 3.3325,37.5 0,37.5 Z" stroke="#8C8C8C" stroke-width="2.5"></path> 
             </g> 
             <polygon fill="#3C3C3C" points="40.25 8.68375 14.13625 8.68375 14.13625 28.5525 40.25 28.5525 40.25 8.68375"></polygon> 
             <g stroke-width="1" fill="none" transform="translate(18.442125, 16.451375)"> 
              <path d="M2.5,3.75 C1.62375,3.75 0.9175,3.04875 0.9175,2.17375 C0.9175,1.2975 1.62375,0.58375 2.5,0.58375 L14.92375,0.58375 C15.7975,0.58375 16.52125,1.2975 16.52125,2.17375 C16.52125,3.04875 15.7975,3.75 14.92375,3.75" fill="#FFFFFF"></path> 
             </g> 
             <g stroke-width="1" fill="none" transform="translate(25.577125, 9.899875)"> 
              <path d="M0,2.5 C0,1.62125 0.70125,0.91625 1.5775,0.91625 C2.45125,0.91625 3.1675,1.62125 3.1675,2.5 L3.1675,14.9225 C3.1675,15.7975 2.45125,16.52 1.5775,16.52 C0.70125,16.52 0,15.7975 0,14.9225" fill="#FFFFFF"></path> 
             </g> 
            </g> 
           </g> 
          </g> 
         </g> 
        </g> 
       </g> 
      </g> 
     </g> 
    </g> 
</svg> 

得ICOは、黒色の背景がありますどのよう

enter image description here

ことができるが私はアイコンの背景の透明性を維持していますか?

+0

おそらくマスクを削除しますか? –

+0

@RobertLongson面白いアイデアですが、残念ながらまだ黒い背景を作りました – scientiffic

+0

私のバージョンでうまくいきます - あなたは 'svg'や(望ましい)' rsvg'デリゲートを使っていますか? –

答えて

0

あなたは、あなたが「-alphaセット」を追加する必要があり、それが動作するはずimage magick's doc

を参照してくださいmogrifyのアルファ引数を逃しています。

+0

"-alpha transparent"を使用すると、完全に白い.icoファイルが生成されます。これは私が使用したコマンドです:mogrify -format ico -density 600 -alpha transparent -defineアイコン:自動サイズ変更= 128,64,48,32,16 * .svg – scientiffic

+0

透明の代わりに「セット」を試してください – Tofandel

+0

「セット"私はまだ黒い背景を持つ.icosを手に入れています。ぼんやりとした - フォーマット - ico -density 600 - アルファベットの設定 - 自動サイズ変更= 128,64,48,32,16 * .svg – scientiffic

0

* .svgが "白"の場合、透明チャンネルとして使用される色を設定するには、-transparentオプションを使用する必要があります。

透明性を保存使用して* .SVGへ* .ICO変換するために、例えばhttp://www.imagemagick.org/script/command-line-options.php#transparent

を参照してください:

-transparent white -format ico -resize 64x64 
0

これがためのImageMagick 6.9.9.27 Q16マックOSXとRSVGデリゲートを使用して私のために正常に動作しますバージョンRSVG 2.40.18でSVGをレンダリングする。

convert -background none test.svg test.png 

IM内部のMSVG/XMLレンダラーがそれほど良くないので、RSVGデリゲートまたはInkscapeをインストールする必要があります。どのレンダラーを使用しているか確認できます。

convert -list format 

SVGの行を見てください。鉱山の表示

SVG SVG  rw+ Scalable Vector Graphics (RSVG 2.40.18) 

あなたのIMのバージョンは何ですか?使用しているSVGレンダラーは何ですか? RSVGをインストールし、ImageMagickがそれを見つけることができるのであれば、RSVGをアップグレードする必要があるかもしれません。

ImageMagickは、システムにインストールされている場合、Inkscape(使用するのに最適なもの)を使用します。それ以外の場合は、デリゲートとしてインストールされている場合はRSVGを使用します。それ以外の場合はどちらも使用されていない場合は、内部レンダラーが使用されますが、これはそれほど良くありません。

これが機能する場合は、icoファイルの作成に進むことができます。

Mogrifyも同じシステム構成で私の作品:-verboseを識別

mogrify -format ico -background none -density 600 -define icon:auto-resize=128,64,48,32,16 test.svg 

identify test.ico 
test.ico[0] ICO 128x128 128x128+0+0 8-bit sRGB 99678B 0.000u 0:00.000 
test.ico[1] ICO 64x64 64x64+0+0 8-bit sRGB 99678B 0.000u 0:00.000 
test.ico[2] ICO 48x48 48x48+0+0 8-bit sRGB 99678B 0.000u 0:00.000 
test.ico[3] ICO 32x32 32x32+0+0 8-bit sRGB 99678B 0.000u 0:00.000 
test.ico[4] ICO 16x16 16x16+0+0 8-bit sRGB 99678B 0.000u 0:00.000 

は、各レベルは、透明性を有することを示しています。