我的SVG图像没有加载

2024-04-19 10:59:02 发布

您现在位置:Python中文网/ 问答频道 /正文

我目前正在尝试在一个非常基本的网站加载几个SVG图像,但是遇到了一些奇怪的问题。如果是相关的,我将使用matplotlib在绘制各种参数化方程时创建的SVG文件。我尝试加载的文件只需加载四个随机的SVG图像(当我尝试单独加载它们时,所有这些图像都可以正常工作和加载)并将它们放入一个小网页中:

<html>
<img src="graphs/{0}.svg">
<img src="graphs/{1}.svg">
<img src="graphs/{2}.svg">
<img src="graphs/{3}.svg">
</html>

(将{0}到{3}替换为实际的文件名,例如1070)。由于某种原因,每次都失败了。例如

^{pr2}$

当我单独访问这些链接时,即使每个链接都能正常工作,也会失败。我还尝试了通过将file:///Users/myname/math_project直接访问html/文件.html作为url,并将{0}等替换为数字,这样就可以了。我真是束手无策,如果有人能帮助我,我将不胜感激。这是用于生成页面的源代码

import socket
import threading
import random
import os
import time
os.chdir("/users/my_name/math_project")
file = open("metadata.txt",'r') # file containing svg file names and equations
svg_data = file.read().split("\n")
file.close()
def handle_call(clientsocket,location): # handles a request
  l = time.time()
  res = clientsocket.recv(100000)
  res = res.split(b"\n")
  request = res[0].split(b" ")[1]
  if request == b"/favicon.ico":
    file = open("favicon.ico",'rb')
    stuff2 = file.read()
    file.close()
    clientsocket.send(stuff2)
  if request == b'/':
    file = open("file.html",'rb')
    res = file.read()
    file.close()
    res = str(res,'utf-8')

    res = res.format(*[random.choice(svg_data).split(":")[0] for a in range(4)])
    clientsocket.send(bytes(res,'utf-8'))
  if request.startswith(b"/graphs/"):
    file = open(place[1:],'rb')
    stuff = file.read()
    file.close()
    clientsocket.send(stuff)
sock = socket.socket()
port = random.randint(2000,10000)
while 1:
  try:
    sock.bind(('',port))
    break
  except BaseException:
    port = random.randint(2000,10000)
print("Bound to port {0}".format(port))
sock.listen(10)
while 1:
  threading.Thread(target=handle_call,args=sock.accept(),).start()

Tags: svgimportsrcimgreadportrequesthtml
2条回答

您可以尝试的一个简单方法是指定doctype来告诉浏览器您使用的是html5。你也可以把内容放在“body”标签中,以防缺少它会混淆任何东西。在

<!DOCTYPE html>
<html>
  <body>
  <img...
  </body>
</html

如果这没用,你能解释一下你所说的“失败”是什么意思吗?输出是什么样子的?当开发工具的“网络”选项卡试图加载图像时,它会报告什么?你的样本完整的html是你的程序的精确输出的副本吗?如果没有,你能准确地粘贴它输出的内容吗?在

查看您的响应头,web服务器返回的SVG文件的内容类型错误。在

Content-Type: image/svg

SVG文件的正确内容(MIME)类型是:

^{pr2}$

修复web服务器。在

相关问题 更多 >