首页 > 解决方案 > 如何从 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 !")

标签: djangohttpunity3dpostrequest

解决方案


推荐阅读