将图像返回到python,cgi-bin中的浏览器

时间:2010-07-07 19:21:59

标签: python image apache2 cgi-bin

我正在尝试在cgi-bin中设置一个python脚本,它只返回一个带有content-type:image / png的标头并返回图像。我尝试打开图像并使用print f.read()将其返回,但这不起作用。

编辑: 我试图使用的代码是:

print "Content-type: image/png\n\n"
with open("/home/user/tmp/image.png", "r") as f:
    print f.read()

这是在ubuntu服务器10.04上使用apache。当我在chrome中加载页面时,我得到了损坏的图像图像,当我在firefox中加载页面时,我得到The image http://localhost/cgi-bin/test.py" cannot be displayed, because it contains errors.

2 个答案:

答案 0 :(得分:6)

  1. 您可能需要将文件打开为"rb"(在基于Windows的环境中通常就是这种情况。
  2. 简单打印可能不起作用(因为它添加'\ n'和东西),最好只writesys.stdout
  3. 声明print "Content-type: image/png\n\n"实际上会打印3个换行符(因为打印会自动添加一个“\ n”。这可能会破坏您的PNG文件。
  4. 尝试:

    sys.stdout.write( "Content-type: image/png\r\n\r\n" + file(filename,"rb").read() )
    
    1. HTML回复需要回车,换行

答案 1 :(得分:0)

你是否在标题后面加上空白行?如果没有,它不是你的标题的结尾!

print 'Content-type: image/png'
print
print f.read()