6

InkscapeとImagickから同じ出力が必要です。

これは、Inkscapeからエクスポートされた期待される結果です。

コアクト画像

ただし、以下のPHPコードは、次の誤った結果を出力します。

間違った画像

PHPコード:

<?php
$im = new Imagick();

$im->setResolution(400,400);
$im->setBackgroundColor(new ImagickPixel('transparent'));
$im->readImageBlob(str_replace(array("color1", "color2"), array("yellow", "blue"), file_get_contents("img.svg")));

$im->setImageFormat("png");
header("Content-type: image/png");
echo $im;
?>

SVGコード:

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg xmlns="http://www.w3.org/2000/svg" version="1.1" width="400" height="400">
<rect width="100%" height="100%" fill="green" />
<path d="M250 150 L150 350 L350 350 Z" opacity="0.9" fill="color1" />
<path d="M150 50 L50 250 L250 250 Z" opacity="0.9" fill="color2" />
</svg>
4

3 に答える 3

1

どのバージョンの PHP と ImageMagick を実行していますか? の関連する出力を共有してくださいphpinfo()。このImageMagickのバグが影響している可能性はありますか? または、最新でない場合は、別の ImageMagic のバグが影響している可能性がありますか?

編集:現時点では、PHP の ImageMagick ライブラリがインストールされているサーバーに簡単にアクセスできませんが、見つかった場合は、提供されたコードをテストして結果を投稿します。

EDIT2:そのフォーラムの投稿があなたのものでない限り、他の人も同じ問題を抱えているようです...

このフォーラムの投稿によると、次のことを試すことができます。

$im->setImageFormat("png32");

ある人はそれがうまくいったと報告しましたが、別の人はそれがうまくいかなかったと言いました...

于 2010-09-02T23:38:52.490 に答える
0

Inkscape は、広くサポートされていないopacityプロパティを使用します。代わりにfill-opacityandを使用してください。stroke-opacity

于 2012-08-24T12:12:58.573 に答える