свойство clip-rect у Raphael, чтобы получить результат на сгенерированном SVG-изображении - PullRequest
0 голосов
/ 15 ноября 2011

У меня есть изображение на холсте в Рафаэле, и я использую клип-прямоугольник, чтобы обрезать детали, которые мне не нужны. Теперь я сгенерировал svg с плагином raphael.serialize, но я не могу заставить работать clip-rect. часть из скрипта php, которая перебирает созданный json:

for ($i=0; $i <= count($json); $i++) {
            if ($json[$i]['type'] == "image" ) {
                $base64 = base64_encode(file_get_contents($json[$i]['src']));
                $output .= '<image overflow="visible" x="'.$json[$i]["x"].'" y="'.$json[$i]["y"].'" width="'.$json[$i]["width"].'"  clip-rect="'.$json[$i]["clip"].'" height="'.$json[$i]["height"].'" transform="'.$json[$i]["transform"].'" preserveAspectRatio="none" xlink:href="data:image/png;base64,'.$base64.'"></image>';
          }
    }

и вот некоторая часть модифицированного плагина сериализации:

var object = {
                  type: node.type,
                  width: node.attrs['width'],
                  height: node.attrs['height'],
                  x: node.attrs['x'],
                  y: node.attrs['y'],
                  src: node.attrs['src'],
                  clip: node.attrs['clip-rect'],
                  transform: node.transformations ? node.transformations.join(' ') : ''
                }

Я пытался использовать viewBox = "'. $ Json [$ i] [" clip "].'" И clip = "'. $ Json [$ i] [" clip "].'", Но я получаю безрезультатно.

как мне заставить эту штуку работать?

1 Ответ

1 голос
/ 15 ноября 2011

Нет атрибута 'clip-rect' в SVG.Однако есть атрибут 'clip-path', который фактически использует Рафаэль (clip-rect - это просто абстракция / ограничение).Обратите внимание, что вам нужно будет сериализовать <clipPath>, который также определяет область отсечения.

...