Python-PHP保存base64到图像


Python - PHP save base64 to image

您好。有人能帮我解决我的问题吗。我是python和php的新手。我想将base64编码的图像发送到我的php服务器。但是我不知道我的php脚本发生了什么。

编码的数据正确地发送到php脚本,并将newImage.jpg保存到目录c:''images/newImage.jpg。但当我尝试预览newImage.jpg时,它会说"Windows照片查看器无法打开此图片,因为文件似乎已损坏、损坏或过大"

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

对不起我的英语。非常感谢。

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()

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

在Python中,您只需要urlencode(),而不需要urllib.quote()

所以你的PHP可以是:

<?php
    $decoded = base64_decode(urldecode($_POST['test']));
    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 = 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()

我是个懒人,但我会在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');
?>

问题很简单,如果你试图将一个还不是图像的对象保存到文件中,那么首先制作一个图像,将其设置为临时图像,然后将其复制到你想要的位置。