1

svg 画像を png に変換し、ファイルに保存し、基本情報を収集するにはどうすればよいですか?

#!/usr/bin/perl 
use strict;
use warnings;
use Image::Magick;

my $svg = <<'SVG';
<?xml version="1.0" encoding="utf-8" ?>
<svg xmlns="http://www.w3.org/2000/svg" version="1.1">
  <rect fill="white" height="87" rx="10" ry="10" stroke="black" stroke-width="1" width="56" x="0" y="0"/>
</svg>
SVG

my $im = Image::Magick->new();
$im->Read(blob => $svg) or die "Could not read: $!";

$im->Write(filename => 'test.png') or die "Cannot write: $!";
my $width = $im->Get('height') || '(undef)';
my $height = $im->Get('width') || '(undef)';
my $size = $im->Get('filesize') || '(undef)';

print "$height x $width, $size bytes\n";

これを実行すると、次のようになります。

(undef) x (undef), (undef) バイト

エラーなし、なしtest.png、および画像のサイズは未定義です。

PerlMagickでsvg画像をpngに変換するにはどうすればよいですか?

これが重複しているかどうかについて: 他のほとんどの質問、ブログ投稿、およびチュートリアルでは、コマンド ラインの ImageMagickconvertツールが使用されています。それは避けたい。現在、変換のために Inkscape を呼び出していますが、プロファイラーはこれらの呼び出しをコード ベースのホット スポットの 1 つとして表示します。320 個までの svg ファイルを扱っていますが、変換に 15 分ほどかかります。新しいプロセスを作成して一時ファイルを作成する必要がないため、ライブラリを使用するとパフォーマンスが向上することを願っています。Inkscape shellも調べています。

4

1 に答える 1