可以将独立的.svg缩放以适合浏览器窗口吗?

时间:2020-09-13 06:04:42

标签: svg browser

这是我要使用SVG的简单测试-图像注释:

mkdir /tmp/test
cd /tmp/test

# grab an image from unsplash, 4100 px in width
wget "https://unsplash.com/photos/kSvpTrfhaiU/download?force=true&w=4100" -O unsplash_kSvpTrfhaiU.jpg

# open this image with Inkscape, have it as linked (not embedded) image, add annotations, save as unsplash_kSvpTrfhaiU.svg
inkscape unsplash_kSvpTrfhaiU.jpg

对,所以我在这里粘贴生成的.svg的代码:

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
   xmlns:dc="http://purl.org/dc/elements/1.1/"
   xmlns:cc="http://creativecommons.org/ns#"
   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
   xmlns:svg="http://www.w3.org/2000/svg"
   xmlns="http://www.w3.org/2000/svg"
   xmlns:xlink="http://www.w3.org/1999/xlink"
   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
   version="1.1"
   id="svg2"
   width="4100"
   height="3075"
   viewBox="0 0 4100 3075"
   sodipodi:docname="unsplash_kSvpTrfhaiU.svg"
   inkscape:version="1.0.1 (1.0.1+r73)">
  <metadata
     id="metadata8">
    <rdf:RDF>
      <cc:Work
         rdf:about="">
        <dc:format>image/svg+xml</dc:format>
        <dc:type
           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
        <dc:title></dc:title>
      </cc:Work>
    </rdf:RDF>
  </metadata>
  <defs
     id="defs6" />
  <sodipodi:namedview
     pagecolor="#ffffff"
     bordercolor="#666666"
     borderopacity="1"
     objecttolerance="10"
     gridtolerance="10"
     guidetolerance="10"
     inkscape:pageopacity="0"
     inkscape:pageshadow="2"
     inkscape:window-width="1366"
     inkscape:window-height="740"
     id="namedview4"
     showgrid="false"
     inkscape:zoom="0.19284553"
     inkscape:cx="2039.629"
     inkscape:cy="1330.0801"
     inkscape:window-x="0"
     inkscape:window-y="0"
     inkscape:window-maximized="1"
     inkscape:current-layer="layer1" />
  <g
     inkscape:groupmode="layer"
     inkscape:label="Image"
     id="g10"
     sodipodi:insensitive="true">
    <image
       sodipodi:absref="/tmp/test/unsplash_kSvpTrfhaiU.jpg"
       xlink:href="unsplash_kSvpTrfhaiU.jpg"
       id="image12"
       preserveAspectRatio="none"
       height="3075"
       width="4100" />
  </g>
  <g
     inkscape:groupmode="layer"
     id="layer1"
     inkscape:label="annot">
    <path
       style="fill:#ff0000;fill-opacity:0.254573;stroke:#000000;stroke-width:16;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
       d="M 29.740335,503.75775 363.73603,38.774206 3583.9418,25.941492 4063.2405,503.75775 2187.6326,810.27606 v 197.63004 l 260.7943,438.302 -220.7943,359.1655 h -296.8699 l -254.9643,-359.1655 273.6888,-438.302 V 810.27606 Z"
       id="path838"
       sodipodi:nodetypes="ccccccccccccc" />
  </g>
</svg>

正确-这就是.svg在Inkscape中的样子:

inkscape

如果我在eog(侏儒之眼)之类的图像查看器中打开它,一切看起来都很好:

eog

但是,如果我直接在浏览器中打开.svg(这就是我所说的“独立”的意思-.svg不是从.html页面加载的,而是直接加载的;我的意思不是“自包含”的),因为此.svg不是“独立的”,因为它链接并且未嵌入照片图像数据)-它以其官方像素大小打开,因此只能看到一小部分:

firefox

然后,我必须使用Ctrl-鼠标滚轮在浏览器中缩放.svg图像,以使其完整显示:

firefox-scaled

所以,这是我的问题-有什么方法可以直接加载“独立” .svg(即,无需通过单独的.html页面进行处理),以便在加载时在浏览器中加载时,浏览器中的初始视图为“全尺寸”,即.svg的整体;即-与屏幕快照4中的相同?

也许我可以向SVG本身添加一些指令?或者在浏览器中使用一些查询字符串来调用它,例如file:///tmp/test/unsplash_kSvpTrfhaiU.svg?scale=full

0 个答案:

没有答案