【问题标题】:Python - PHP save base64 to imagePython - PHP 将 base64 保存到图像
【发布时间】:2014-09-02 03:48:16
【问题描述】:

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

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

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

对不起我的英语。谢谢。

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 python


    【解决方案1】:

    在您的 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()
    

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        猜你喜欢
        • 2016-03-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-09-18
        • 1970-01-01
        • 1970-01-01
        • 2021-05-25
        • 1970-01-01
        相关资源
        最近更新 更多