Python - PHP将base64保存到图像

时间:2014-09-02 03:48:17

标签: php python

美好的一天。有人可以帮助我解决我的问题。我是python和php的新手。我想将base64编码的图像发送到我的php服务器。但我不知道我的PHP脚本会发生什么。

编码数据正确发送到php脚本并将newImage.jpg保存到目录c:/image/newImage.jpg。但是,当我尝试预览newImage.jpg时,它说" Windows照片查看器无法打开此图片,因为该文件似乎已损坏,损坏或变大[&p>;

问题是如何正确保存图像。 任何意见和建议非常感谢。

抱歉我的英文。谢谢。

PHP脚本:

<?php
    $encodedString = str_replace(' ','+',$_POST['test']);
    $decoded=base64_decode($encodedString);
    file_put_contents('c:/image/1/newImage.JPG',$decoded);
?>

Python脚本:

import urllib
import urllib2
from urllib import urlencode

url = 'http://192.168.5.165/server/php/try2.php'
encoded = urllib.quote(open("c:/image/1.jpg", "rb").read().encode("base64"))

data = {'test': encoded}
encoded_data = urlencode(data)

website = urllib2.urlopen(url, encoded_data)
print website.read()

2 个答案:

答案 0 :(得分:0)

在您的PHP代码中,您需要$_POST['test']中的数据urldecode(),然后base64_decode()urlencode()您不需要用'+'替换空格(无论如何都是从前到后)。

在Python中,您只需要urllib.quote(),您也不需要<?php $decoded = base64_decode(urldecode($_POST['test'])); file_put_contents('c:/image/1/newImage.JPG',$decoded); ?>

所以你的PHP可以是:

import urllib
import urllib2
from urllib import urlencode

url = 'http://192.168.5.165/server/php/try2.php'
encoded = open("c:/image/1.jpg", "rb").read().encode("base64")

data = {'test': encoded}
encoded_data = urlencode(data)

website = urllib2.urlopen(url, encoded_data)
print website.read()

你的Python代码:

{{1}}

答案 1 :(得分:0)

我是一个懒惰的家伙,但我会帮助改变这个在PHP

<?php
    $encodedString = str_replace(' ','+',$_POST['test']);
    $decoded=base64_decode($encodedString);
    $decoded=imagecreatefromstring($decoded);
    imagejpg($decoded, "temp.jpg");
    copy("temp.jpg",'c:/image/1/newImage.JPG');
?>

问题很简单,您试图将尚未成像的对象保存到文件中,因此首先将图像设置为临时图像,然后将其复制到您想要的位置。