我不会使用url(即HTTPpost作为json对象)将图像从android发送到python jupyter笔记本。我有烧瓶代码,可以预测该图像并返回该图像的标签,我也想将结果发送回android。
我尝试先在位图中对图像进行编码,然后再将其编码为字节数组,然后将其作为字符串json对象发送。但我不知道如何在python中接收该图像
pyhton文件:
from flask import Flask
from flask import request
app = Flask(__name__)
@app.route('/')
def index():
return "Welcome to Contact Less PALM Authentication"
@app.route('/authenticate',methods = ['POST', 'GET'])
def authenticate():
#image_name = request.args.get('image_name')
json_string=request.get_json()
print("JSON String "+str(json_string))
#path = test_path + "/"+image_name
#img= image.load_img(path, target_size=image_size)
#x = image.img_to_array(img)
return "JSON String "+str(json_string) #+ predict_label(x)
if __name__ == '__main__':
app.run(host='0.0.0.0')
Android代码:
private JSONObject buidJsonObject() throws JSONException {
JSONObject jsonObject = new JSONObject();
Bitmap bitmap =((BitmapDrawable)user_img.getDrawable()).getBitmap();
ByteArrayOutputStream baos = new ByteArrayOutputStream();
bitmap.compress(Bitmap.CompressFormat.JPEG, 100, baos);
byte[] imageInByte = baos.toByteArray();
String img_array = Base64.encodeToString(imageInByte, Base64.DEFAULT);
// String img_array = new String(imageInByte);
try {
baos.close();
}
catch (IOException e)
{
e.printStackTrace();
}
jsonObject.accumulate("image_Array",img_array);
return jsonObject;
}
答案 0 :(得分:0)
以Android代码发送图片
对图像进行编码后,通过POST请求将其发送。我不太清楚Java,但是您可以看看this answer。
在Flask服务器中接收图像
收到发布请求后,使用库base64中的函数decode('base64')
。然后,您可以将映像保存在例如服务器上。
base64字符串仅包含文件的内容,而不包含元数据。如果要在服务器上使用文件名,则必须通过其他参数发送它。
import base64
@app.route('/authenticate',methods = ['POST', 'GET'])
def authenticate():
encodedImg = request.form['file'] # 'file' is the name of the parameter you used to send the image
imgdata = base64.b64decode(encodedImg)
filename = 'image.jpg' # choose a filename. You can send it via the request in an other variable
with open(filename, 'wb') as f:
f.write(imgdata)