Czy można osadzić lub połączyć jeden dokument SVG inkscape w innym?


16

Chciałbym wziąć jeden mały plik SVG (utworzony za pomocą Inkscape) i osadzić go lub połączyć z innym (większym) plikiem. Wyświetlany przez przeglądarkę mam nadzieję, że mniejszy pojawi się w jakimś symbolu zastępczym większego.

Czy to możliwe?

Odpowiedzi:


8

Wolę <use>aby <image>jak później staje się w stałej rozdzielczości i nie skalowania jak zwykłe obiekty wektorowe zrobić w bieżącym dokumencie.http://www.w3.org/TR/SVG11/struct.html#ImageElement

Ale element <use>nie może odwoływać się do całych plików SVG, jego xlink:hrefatrybutem jest odwołanie do elementu / fragmentu w dokumencie SVG ( http://www.w3.org/TR/SVG11/struct.html#UseElement ). Element „use” może odwoływać się do dowolnego lokalnego lub nielokalnego zasobu.

przykład:

MyLibrary.svg:
<svg (...)>
        <rect x="0" y="0" width="200" inkscape:label="upper-left-blue"
              style="fill:#729fcf;fill-opacity:1;fill-rule:nonzero;stroke:none"
              id="upper-left-blue" height="200"/>

UseParts.svg:
        <use x="0" y="0" width="400" xmlns:xlink="http://www.w3.org/1999/xlink"
             xlink:href="MyLibrary.svg#upper-left-blue" xlink:type="simple"
             xlink:actuate="onLoad" height="400" id="use8793" xlink:show="embed"/>

Obsługa tej funkcji może być różna dla różnych edytorów / przeglądarek SVG, o ile wiem, że powinna działać (przynajmniej) w Inkscape, Firefox i Batik.


Myślę, że warto zauważyć, że Inkscape dodał obsługę tej funkcji w wersji 0.91. Dodałem ppa Inkscape, aby uzyskać tę wersję na Mint 17 (14.04 Ubuntu).
— Leif Carlsen,

@LeifCarlsen Jak dokładnie? Wydaje mi się, że nie potrafię tego zrobić w 0.91
— rac2030 24.01.16

1
Generuję pliki za pomocą tej funkcji poza Inkscape i przeglądam / renderuję za pomocą Inkscape.
— Leif Carlsen

Hmmm ... ok Próbowałem i nie udało mi się to wcześniej, ale może muszę spróbować bardziej
— rac2030 30.01.2016

Ha nevermind ... zwykle to użytkownik popełnia błąd ... dla odniesienia Po prostu zapomniałem dodać definicję xlink ... Dodałem przestrzeń nazw do górnego tagu svg i nagle zaczęło działać ;-)
— rac2030

3

Użyj imageelementu i odwołaj się do pliku SVG. Dla zabawy zapisz następujące dane recursion.svg:

<svg width="100%" height="100%" viewBox="-100 -100 200 200" version="1.1"
     xmlns="http://www.w3.org/2000/svg"
     xmlns:xlink="http://www.w3.org/1999/xlink">
  <circle cx="-50" cy="-50" r="30" style="fill:red" />
  <image x="10" y="20" width="80" height="80" xlink:href="recursion.svg" />
</svg>

Źródło: /programming/5451135/embed-svg-in-svg/5451238#5451238


W jakiś sposób powoduje to komunikat „Nie znaleziono powiązanego obrazu” z programem Inkscape 0.48.4 przynajmniej w systemie Windows.
— mlt

może poprzedzić xlink: href przez „./”? pracuje dla mnie.
— Berteh
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.