Image 在创建SVG时自动缩放SVG
目前,我正在使用以下命令生成SVG:Image 在创建SVG时自动缩放SVG,image,svg,imagemagick,ghostscript,Image,Svg,Imagemagick,Ghostscript,目前,我正在使用以下命令生成SVG: gs-sDEVICE=svg-dNOCACHE-sOutputFile=“photo.svg”-q-dbatch-dNOPAUSE“photo.pdf.out”-c退出 我想把图像放大一倍。使用GS的-r和-g选项只会得到相同的图像。我不确定GS和SVG设备是否支持这些选项 我曾尝试使用ImageMagick的convert绕过ghostscript,但当我在浏览器中查看图像时,它会将SVG显示为代码 原始图像是裁剪后的PDF。我尝试直接缩放,但没有得到高质
gs-sDEVICE=svg-dNOCACHE-sOutputFile=“photo.svg”-q-dbatch-dNOPAUSE“photo.pdf.out”-c退出
我想把图像放大一倍。使用GS的-r
和-g
选项只会得到相同的图像。我不确定GS和SVG设备是否支持这些选项
我曾尝试使用ImageMagick的convert
绕过ghostscript,但当我在浏览器中查看图像时,它会将SVG显示为代码
原始图像是裁剪后的PDF。我尝试直接缩放,但没有得到高质量的图像,这可能是因为我在ImageMagick中没有标记一个选项。我无法帮助您进行Ghostscript查询(看起来-r和-g只能在渲染为位图时应用),但我可以给您一个关于如何使用SVG输出的提示
选项1
您可以使用CSS缩放SVG。例如:style=“transform:scale(4);”
。但这可能并不适用于所有浏览器
选项2
可以调整SVG标题,使其在渲染时显示得更大。为此,需要向SVG添加一个viewBox
属性。这个步骤有点复杂,因为SVG的尺寸是用点(“pt”)表示的。而viewBox的尺寸是以CSS像素表示的。一点是1/72英寸。而CSS像素是1/96英寸
无论如何,viewBox属性描述SVG内容的边界,格式为“
”
对于您的文件,minX和minY可能都是0。对于宽度和高度,我们需要将指定的宽度和高度从
转换为默认坐标空间
在您的示例中,宽度为“5pt”。转换为CSS像素,这是5*96/72=6.6666
高度为“13pt”,转换为(13*96/72)=17.3333
因此,我们的视图框变成了“0 0 6.6666 17.3333”
但是,这不会渲染得更大,因为viewBox的大小与旧的宽度和高度相同。要使其渲染得更大,现在可以增加“宽度”和“高度”属性
例如,要使其大四倍,请将宽度和高度增加四倍,如下所示:
<svg xmlns='http://www.w3.org/2000/svg' version='1.1'
width='20pt' height='52pt' viewBox="0 0 6.6666 17.3333">
<ellipse cx="2.5pt" cy="6.5pt" rx="2.5pt" ry="6.5pt" fill="green" />
</svg>
如果要填充浏览器窗口,请将宽度和高度设置为100%
。或者删除它们,这是一样的,因为它们默认为
希望这有帮助。SVG是矢量文件,因此与分辨率无关。因此,没有真正的理由尝试将要复制的SVG的大小“增加一倍”。您应该问的真正问题是“如何在渲染时显示两倍大小的SVG?”要回答这个问题,我们需要知道您对生成的SVG做了什么。例如,您是否在网页中显示它们?是的,正在为网页呈现它们。尽管正在设置DOCTYPE,但图像不会与任何其他HTML元素一起显示。现在我正试图用Perl解析svg元素的宽度和高度属性。我希望GS有一个我可以设定的选项。你不需要这么做。你能发布或链接到一个SVG吗?特别是第一行是我需要看到的。@BigBadaboom
我认为在将宽度和高度属性加倍的同时,也将g_变换比例加倍也会起作用,因为在我的特殊情况下,所有其他标记都嵌入其中。它在我测试的特定浏览器中工作,但必须在IE和其他浏览器上测试。
<svg xmlns='http://www.w3.org/2000/svg' version='1.1'
width='20pt' height='52pt' viewBox="0 0 6.6666 17.3333">
<ellipse cx="2.5pt" cy="6.5pt" rx="2.5pt" ry="6.5pt" fill="green" />
</svg>