10

raphaeljsエクスポートプラグイン(https://github.com/ElbertF/Raphael.Export)に問題があります。パス要素では属性を使用fillし、ソースとして画像のURLをフルフィルに指定します。しかし、これをSVGにエクスポートすると、パス要素の定義が表示されますが、PNGにエクスポートすると、再度表示されません。

したがって、私のアプリでは、次のような要素attrにtoを追加します。path

paper.path("M 195 10 L 300  L 195 z").attr({'stroke-width': 0,'fill': 'url(images/alfen/02/murek.png)'});

そして私はこれをエクスポートしますpaper.toSVG()

そして私のSVGで私はパスを見つけます:

<path transform="matrix(1,0,0,1,0,0)" fill="url(images/alfen/02/murek.png)" stroke="#000" d="M203,183.94389438943895L948,183.94389438943895L948,195L203,195Z" stroke-width="0"></path>

しかし、これをPNGに変換すると、次のようになります。

<?php 
    $json        = $_POST['json'];
    $output      = str_replace('\"','"',$json);
    $filenameSVG = 'test';

    file_put_contents("$filenameSVG.svg", $output);

    $konwert = "convert $filenameSVG.svg $filenameSVG.jpg";

    system($konwert);

私はこの道が私の背景で満たされているのを見つけることができません。誰か助けてもらえますか?

4

2 に答える 2

1

svgへの正しい出力を取得できても、phpでpngに到達できない場合は、確認する必要のあることがいくつかあります。

  • 健全性チェックとして、$ _POST['json']が不正な形式のjsonを返さないことを確認してください
  • あなたのphpの次の行は私を混乱させます:$output = str_replace('\"','"',$json);
  • 返されるjsonが単一のオブジェクトである可能性がありますが、ファイル全体を検索し、のような特定のネストされたオブジェクトを検索しない理由はまだ$output = str_replace('\"','"',$json['filename_and_path']);わかりません。返されるjsonが1行の場合、それを処理するためのより良い方法かもしれません-つまり、文字列として投稿するか、配列とインデックスでそれぞれを返すことさえできます。

そして、このようなもののために:

$konwert = "convert $filenameSVG.svg $filenameSVG.jpg";
system($konwert);

system()文字列に有効な変数を入力していない可能性があります。確かに、次のように文字列を適切に連結することをお勧めします。

$konwert = "convert".$filenameSVG.".svg ".$filenameSVG.".jpg";

また、コマンドを実行するには、サーバー上のファイルへの絶対ファイルパスが必要になります。そうしないと、ファイルが見つかりません。$konwert = "convert".$filenameSVG.".svg ".$filenameSVG.".jpg";これらの2つのファイルがプロジェクトのルートディレクトリにある場合にのみ、コードは明らかに機能します。

また、この場合は使用すべきではないと思いsystem()ます。passthru()私の理解では、画像バイナリを処理するために使用する必要があります。ありますexec()が、実際には、ここで必要なのはですpassthru()。参照:http ://www.php.net/manual/en/function.passthru.php

于 2014-04-13T16:44:28.697 に答える
0

パスは画像のコンテナを設定しているようです。使用できませんでした:

paper.image('images/alfen/02/murek.png', 50, 50, 300, 195);

信頼性が高いようです。それをスターターとして使用し、好きなパスを追加することができます。画像を塗りつぶしとして使用すると、期待した場所にレンダリングされないように見えるため、問題が発生しました。

そして、あなたはまだ使うことができます:paper.toSVG()

そのバージョンを問題なく変換することができました。

于 2014-01-16T16:38:19.027 に答える