Я использую Unity 2018.3. и попробуйте HTTP POST-запрос с изображением из Unity в Django.
попробуйте сделать снимок в Unity, а затем отправьте его на сервер Django.
Я хочу получить на сервере и сделать это в файл изображения.
хорошо, когда я отправляю файл изображения в byte [] с помощью EncodeToPNG () или EncodeToJPG (), сервер получает его, но когда я печатаю его, данные об ошибке выглядят как ошибка кодирования. поэтому он не может записать в формат изображения. (код для фотосъемки работает правильно.)
Изображение сервера Django
Я видел кучу вещей об этой проблеме, поэтому я попытался другим способом, например, использовать WWWform или JSON, но ничего не получалось ..
как получить изображение из Unity в Django?
Вся помощь приветствуется! Спасибо всем.
1011 *
*
сделайте снимок
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 !")