Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/svg/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Image 在创建SVG时自动缩放SVG_Image_Svg_Imagemagick_Ghostscript - Fatal编程技术网

Image 在创建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。我尝试直接缩放,但没有得到高质

目前,我正在使用以下命令生成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。我尝试直接缩放,但没有得到高质量的图像,这可能是因为我在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>