django - 如何从 Unity 获取不崩溃的图像文件到 Django?
问题描述
我正在使用 Unity 2018.3。并尝试使用从 Unity 到 Django 的图像进行 HTTP POST 请求。
尝试在 Unity 中拍照,然后将图像发布到 Django 服务器。
我想在服务器中接收并制作成图像文件。
好吧,当我使用 EncodeToPNG() 或 EncodeToJPG() 将图像文件发送到字节 [] 时,服务器得到了它,但是当我打印它时,它崩溃的数据似乎是编码错误。所以它不能写入图像格式。(拍照代码工作正常。)
Django 服务器结果图像
我看到了很多关于这个问题的事情,所以我尝试了其他方式,比如使用 WWWform 或 JSON,但任何事情都无法正常工作..
如何将图像从 Unity 获取到 Django?
所有帮助表示赞赏!谢谢大家。
拍照
void TakeSnapshot()
{
Texture2D snap = new Texture2D(frontCam.width, frontCam.height);
snap.SetPixels(frontCam.GetPixels());
snap.Apply();
_SavePath = pathForDocumentsFile("photo");
System.IO.File.WriteAllBytes(_SavePath + ".png", snap.EncodeToPNG());
bytes = snap.EncodeToPNG();
//bytes = snap.EncodeToJPG();
UnityEngine.Object.Destroy(snap);
path = _SavePath + ".png";
StartCoroutine(ServerThrows());
}
POST 到服务器
IEnumerator ServerThrows()
{
List<IMultipartFormSection> formData = new List<IMultipartFormSection>();
formData.Add(new MultipartFormDataSection("photo", bytes, "byte[]"));
//UnityWebRequest www = UnityWebRequest.Post(url, null, bytes);
UnityWebRequest www = UnityWebRequest.Post(url, formData);
www.chunkedTransfer = false;
yield return www.SendWebRequest();
if (www.isNetworkError || www.isHttpError)
{
Debug.Log(www.error);
}
else
{
Debug.Log("Form upload complete!" + www.downloadHandler.text);
}
}
服务器中的响应
def post(self, request, format=None):
print('get the data')
print('request.POST: ', request.POST)
print('request.headers: ', request.headers)
data_test = request.POST.get('photo', '')
print('data test is : ', data_test)
print('type of data_test is : ', type(data_test))
print('length of data_test is : ', len(data_test))
print('finish to get ')
# data_test = data_test.decode('utf-8').encode('euc_kr','replace')
f = open('./test.png','wb')
f.write(data_test.encode())
f.close()
#
data = open('./test.png', 'rb')
return HttpResponse("post !")
解决方案
推荐阅读
- json - 从 vue 访问格式为 json 的 axios 数据
- javascript - 导航多维对象以仅与 ES5、多个 Object.key 和 .map 匹配键
- javascript - jQuery addClass 定位元素但不添加类
- graph - 从给定节点获取遵循单向关系的可达节点并将该子图显示为树
- python - 如何可靠地使用镶木地板文件中的日期时间值来填充(雪花)表
- ios - (Swift) 处理用户对 webView 的点击
- c# - 在加载期间打印每一行的导入函数?
- wcf - 为 wcf webhttpbinding 提供异常
- profiling - 使用 perf 工具测量挂钟时间的最佳事件计数器
- javascript - 如何使用 vanilla javascript 在字符串中的特定位置添加任何内容