【发布时间】:2013-02-26 12:27:48
【问题描述】:
我从屏幕截图中获得了一个 python Image 对象,我想将它保存在运行 PHP 的服务器上。
我想在不将图像保存在用户计算机上的情况下完成所有这些操作,因此我想向 PHP 脚本发送它可以理解的编码,我可以从 PIL Image 实例中获取该编码。
到目前为止,我已经尝试将图像保存到缓冲区(在 python 中)并将数据发送到 PHP 函数 file_put_contents,但生成的文件不是正确的 .png 图像(我刚刚保存了 PNG将字符串编码为具有 .png 扩展名的文件...)
这是我的代码...
客户
# shot is an Image instance
buff = StringIO()
shot.save(buff, 'PNG')
args = {'filename':'eg.png','image': buff.getValue()}
data = urllib.urlencode(args)
request = urllib2.Request(self.uploadURL, data)
urllib2.urlopen(request).read()
服务器
# 'filename' arg ends in .png, 'image' arg is the upload parameter ^
$filename = 'images/'.$_POST['filename'];
file_put_contents($filename, $_POST['image']);
我认为我需要先用 PHP 转换图像数据,然后再尝试将其写入文件,但我不确定如何。
我之前通过将图像保存到文件并以 base 64 发送二进制内容来完成此操作,但我根本不希望将图像保存在客户端的计算机上。
谢谢!
免责声明:这个问题和我对编码的看法对我来说完全“恶心”,很抱歉成为如此巨大的菜鸟/可怕的误解。
【问题讨论】:
-
点击此链接stackoverflow.com/questions/7877282/…可能对您有所帮助。
-
@Anup 我真的不想将图像保存在他们的计算机上,即使只是暂时的。我根本不相信它是必需的(或一个好的解决方案)
-
我检查了您解决方案的 Python 方面,它似乎工作:它应该将整个 PNG 数据提供给
upload()。您需要检查服务器端真正发送和接收的内容。如果您使用文本编辑器打开最终的 .png 文件,它会是什么样子? -
@Armin The saved image content
-
@AntiEarth 呃,对我来说这看起来像是一个有效的 PNG 图像。但是不能在图片查看器中打开?
标签: php python image encoding python-imaging-library