我知道Internet上图像的URL.
例如http://www.digimouth.com/news/media/2011/09/google-logo.jpg,其中包含Google的徽标.
现在,如何使用Python下载此图像,而无需在浏览器中实际打开URL并手动保存文件.
我发现以下asp.net代码在从数据库提供文件时非常有用:
Response.AppendHeader("content-disposition", "attachment; filename=" + fileName);
Run Code Online (Sandbox Code Playgroud)
这允许用户将文件保存到他们的计算机,然后决定如何使用它,而不是尝试使用该文件的浏览器.
使用内容处置响应标头还可以做些什么?
http httpresponse httpwebresponse content-disposition http-headers
模块中有一个QSvgRenderer类QtSvg可以渲染图像QPaintDevice.这个可以QImage.在这种情况下,我们将创建:
Image svgBufferImage(renderer.defaultSize(), QImage::Format_ARGB32);
Run Code Online (Sandbox Code Playgroud)
但是如何QImage从SVG渲染器渲染到与默认大小不同的大小?由于SVG格式图像可以在没有质量损失的情况下进行缩放,是否可以使用QSvgRenderer?生成SVG文件中的静态图像,如PNG .
有没有人有更好的主意?基本上我需要从不同大小的SVG文件创建像PNG这样的图像.
所以我想从具有目标分辨率 WxH 的 python 代码渲染 SVG(将 SVG 文本作为 str,就像我动态生成的那样):
<svg width="200" height="200" viewBox="0 0 220 220"
xmlns="http://www.w3.org/2000/svg">
<filter id="displacementFilter">
<feTurbulence type="turbulence" baseFrequency="0.05"
numOctaves="2" result="turbulence"/>
<feDisplacementMap in2="turbulence" in="SourceGraphic"
scale="50" xChannelSelector="R" yChannelSelector="G"/>
</filter>
<circle cx="100" cy="100" r="100"
style="filter: url(#displacementFilter)"/>
</svg>
Run Code Online (Sandbox Code Playgroud)
转换为 png 图像。如何在Python中做这样的事情?
我正在使用svgwrite和生成 svg 文件,如何将它们转换为 PNG 或 JPEG?
目前我正在使用rsvg加载svg(从字符串,而不是从文件)和绘图到cairo.谁知道更好的方法?我在我的应用程序中的其他位置使用PIL,但我不知道如何使用PIL执行此操作.
我正在批量创建一些SVG,需要将它们转换为PDF文档进行打印.我一直在尝试使用svglib它的svg2rlg方法,但我刚刚发现它在保存文档中的矢量图形方面绝对令人震惊.它几乎无法正确定位文本.
我动态生成的SVG格式正确,我svglib在原始输入上进行了测试,以确保它不是我要介绍的问题.
那么我过去svglib和ReportLab的选择是什么?它要么必须是免费的,要么非常便宜,因为我们已经超出了该项目的预算.我们负担不起ReportLab Plus的1k /年费用.
我正在使用Python,但在这个阶段,只要它在我们的Ubuntu服务器上运行,我就很高兴.
编辑:经过测试的王子.更好,但它仍然忽略了一半的文件.
我正在尝试在 matplotlib 子图中嵌入一个 SVG 图像。
matplotlib 只能在本机读取 PNG,但是如果安装了 PIL,它将使用它来加载图像并返回一个可以与 imshow() 一起使用的数组(如果可能)。 http://matplotlib.sourceforge.net/api/pyplot_api.html
import Image
filename = "/tmp/figure.svg"
pil_img = Image.open(filename) # PIL image
img = np.asarray(pil_img) # converting PIL image into numpy array
self.axes.cla()
self.axes.imshow(img)
Run Code Online (Sandbox Code Playgroud)
但当然 PIL 不支持 SVG。错误:
文件“/usr/lib/python2.7/dist-packages/PIL/Image.py”,第 1980 行,打开
引发 IOError("无法识别图像文件")
IOError:无法识别图像文件
如何光栅化 SVG 文件以imshow使用 matplotlib绘制或直接绘制向量?
谢谢。
它是否需要完全成熟的unicode字符呈现的依赖关系,还是可以读取和呈现任何平台(Linux/Max/Windows)本机字体字形而没有太多问题?
它可以在生成的pdf文件中导入/渲染eps/pdf/svg,还是我必须手动解析图像文件,并在Cairo中重绘它?
我在 Linux 下使用 Python。你能推荐一些库或命令行工具来解析我可以在我的 Python 程序中使用的 Adobe Illustrator (.ai) 文件吗?
我需要做的包括:
我在 Ubuntu 下需要它,所以我不能使用 win32com
问题:哪个可重现的过程可以使 Windows Python 用户将 SVG 图像渲染为 PNG?
许多问题/答案(例如Convert SVG to PNG in Python和Server-side SVG to PNG (or some other image format) in python,由于下面解释的原因,它们不重复)解释了如何使用 Python 将 SVG 转换为 PNG .
不幸的是,它们都不能用于 Python + Windows。经过 20 多分钟,以及许多不同的尝试,我仍然无法做到。有关失败尝试的更多详细信息:
cairo在 Windows 上安装并不简单,我们必须使用 Gohlke 的二进制文件在 Windows 上使用 Python 3.7 安装 pycairo:
pip install pycairo-1.20.0-cp37-cp37m-win_amd64.whl
Run Code Online (Sandbox Code Playgroud)
甚至有一次cairo安装,rsvg(从主答案为PNG(或其他图像格式)的Python服务器端SVG,转换SVG至PNG在Python)不适用于Windows:
pip install rsvg # or pyrsvg
> ERROR: No matching distribution found for …Run Code Online (Sandbox Code Playgroud)首先,我注意到有很多相关的问题,但是在尝试了 pyvip 和 cairo 以及其余的一天之后,即使在安装了它们似乎依赖的其他软件之后,它们都对我不起作用。例外是 svglib 和 reportlab,它很接近,但还没有完全达到目标!这是我发现的最好的帖子,可能会对一些人有所帮助。
我的所有源图像都保存在 SVG 文件中。大多数应用商店要求您提供一组具有特定尺寸和质量的 PNG。所以我需要获取一个 SVG 并生成一个宽度为 w、高度为 h 以及特定 dpi 的 PNG。我想在 python 中以编程方式执行此操作。
我编写了一个几乎可以工作的函数,但是缩放和 dpi 以奇怪的方式相互作用。我使用 svglib 将 SVG 转换为 ReportLab 绘图,然后使用 reportlab 操作该绘图。与其他一些选项不同,Windows 上的安装过程很顺利。
pip install svglib
pip install reportlab
Run Code Online (Sandbox Code Playgroud)
代码如下。我检查了上面的库来获取参数,但添加了一些东西来获取特定的大小。
from svglib.svglib import svg2rlg
from reportlab.graphics import renderPM
def svg_to_png(in_path,out_path,fmt="PNG",
scale=None,size=None,scale_x=1,size_x=None,scale_y=1,size_y=None,
dpi=72, bg=0xffffff):
# Convert SVG to ReportLab drawing.
drawing = svg2rlg(in_path)
# Work out scale factors
# Scale over-rides scale_x|y, ditto size
scale_x = scale if …Run Code Online (Sandbox Code Playgroud) 我正在使用基于 Cairo/RSVG 的解决方案将 SVG 光栅化为 PNG。它已经在 StackOverflow 上的Convert SVG to PNG in Python 中进行了描述。但是,此解决方案似乎不适用于自定义字体。
我发现这个页面描述了嵌入 SVG 字体。
我尝试通过 XLink 从外部 SVG 中包含它们,如示例中所述。我尝试将字体直接嵌入到同一个 SVG 文件中。失败了,我尝试了 CSS Web Fonts 语法。在使用 Cairo 渲染时,这 3 种方法都不起作用(在 Ubuntu 的默认查看器 Eye of GNOME 中也不起作用)。
我试过 ImageMagick,结果与开罗完全相同。
另一方面,使用所有 3 种字体嵌入方法,字体在 WebKit 中呈现得很好,无论是使用 Google Chrome 还是webkit2png.py。但是,如果可能的话,我想避免在服务器上使用 QT WebKit,因为它的设置很重要(包括 xvfb 等),而且恐怕这可能不会导致非常高效或稳定。
有没有其他方法可以从 Python 将 SVG 渲染为 PNG?