使用JSON

时间:2016-04-30 17:55:04

标签: php python json sockets base64

我正在尝试发送从相机拍摄的图像并转换为base 64格式以转换为JSON格式。一切都运行正常,除非我在python中使用json.dump的功能,它将\ n添加到image_64基本格式,在服务器中,它无法正确解码图片 - 它给出了一个空白图像。

发送图像的Python代码:

import socket
import datetime
import json
import base64 , urllib
from cam import *

Signal = "200"
Date = datetime.datetime.now()


captureImage()
del(camera)
facechop('test_image.png')

image ='test_image.png'

image_64 = base64.encodestring(open(image,"rb").read())

print "----------------------------------------------"

try:
client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
client_socket.connect(('X.X.X.X', 20001))
code = json.dumps({"number": Signal, "date" : "{:%m/%d/%Y}".format(Date),     "image" : image_64}).encode('utf8')

client_socket.sendall(code)
receive = client_socket.recv(5012)
print receive


except Exception as e:
print("ERROR: "+str(e))

&安培;服务器代码是:

 function checkMessageRecieved(){
    foreach ($this->changed as $key => $socket) {
        $buffer = null;
        while(socket_recv($socket, $buffer, 10240000, 0) >= 1) {
            $n = trim($buffer);
            $decodeJSON = json_decode($n, true);
            $number = $decodeJSON['number'];
            $date = $decodeJSON['date'];
            $image = $decodeJSON['image'];
            echo $number;
            echo $date;
            echo $image;


            $image=str_replace("\n", "" , $image);
            $img = str_replace('data:image/png;base64,', '', $image);
            $img = str_replace(' ', '+', $img);
            $data = base64_decode($img);
            $file = __DIR__ . "/../photos/public/" . uniqid() . '.png';
            $success = file_put_contents($file, $data);
            print $success ? $file : 'Unable to save the file.';
            $this->sendMessage(trim("Successfully done...") . PHP_EOL);

            unset($this->changed[$key]);
            break;
        }
    }
}

0 个答案:

没有答案