Nginx не работает для определенного URL / AppzillonServer

Я попытался преобразовать его в байты, редактируя эту функцию, а не передавая ее www.text и получив поврежденную ошибку изображения

Вероятно, это причина 90 % вашей проблемы. WWW.text используется для не двоичных данных, таких как простой текст.

1. Загружать изображения или файлы с помощью WWW.bytes не WWW.text.

2. Сохранять изображение с помощью File.WriteAllBytes.

3. Прочитайте изображение с File.ReadAllBytes.

4. Загрузите изображение в текстуру с помощью Texture2D.LoadImage(yourImageByteArray);

5. Ваш путь должен быть Application.persistentDataPath/yourfolderName/thenFileName, если вы хотите, чтобы это было совместимо с каждой платформой. Он не должен быть Application.persistentDataPath/yourFileName или Application.dataPath.

6. Наконец, используйте Debug.Log, чтобы узнать, что происходит в вашем коде. Вы должны или, по крайней мере, использовать отладчик. Вы должны точно знать, где находится ваш код.

Вам все равно нужно выполнить некоторые проверки ошибок.

public void downloadImage(string url, string pathToSaveImage)
{
    WWW www = new WWW(url);
    StartCoroutine(_downloadImage(www, pathToSaveImage));
}

private IEnumerator _downloadImage(WWW www, string savePath)
{
    yield return www;

    //Check if we failed to send
    if (string.IsNullOrEmpty(www.error))
    {
        UnityEngine.Debug.Log("Success");

        //Save Image
        saveImage(savePath, www.bytes);
    }
    else
    {
        UnityEngine.Debug.Log("Error: " + www.error);
    }
}

void saveImage(string path, byte[] imageBytes)
{
    //Create Directory if it does not exist
    if (!Directory.Exists(Path.GetDirectoryName(path)))
    {
        Directory.CreateDirectory(Path.GetDirectoryName(path));
    }

    try
    {
        File.WriteAllBytes(path, imageBytes);
        Debug.Log("Saved Data to: " + path.Replace("/", "\\"));
    }
    catch (Exception e)
    {
        Debug.LogWarning("Failed To Save Data to: " + path.Replace("/", "\\"));
        Debug.LogWarning("Error: " + e.Message);
    }
}

byte[] loadImage(string path)
{
    byte[] dataByte = null;

    //Exit if Directory or File does not exist
    if (!Directory.Exists(Path.GetDirectoryName(path)))
    {
        Debug.LogWarning("Directory does not exist");
        return null;
    }

    if (!File.Exists(path))
    {
        Debug.Log("File does not exist");
        return null;
    }

    try
    {
        dataByte = File.ReadAllBytes(path);
        Debug.Log("Loaded Data from: " + path.Replace("/", "\\"));
    }
    catch (Exception e)
    {
        Debug.LogWarning("Failed To Load Data from: " + path.Replace("/", "\\"));
        Debug.LogWarning("Error: " + e.Message);
    }

    return dataByte;
}

Использование:

Подготовьте url для загрузки изображения и сохранения в:

//File url
string url = "http://www.wallpapereast.com/static/images/Cool-Wallpaper-11C4.jpg";
//Save Path
string savePath = Path.Combine(Application.persistentDataPath, "data");
savePath = Path.Combine(savePath, "Images");
savePath = Path.Combine(savePath, "logo");

Как вы можете видеть, нет необходимости добавлять расширение изображения ( png , jpg ) в savePath , и вы не должны добавлять расширение изображения в путь сохранения. Это облегчит загрузку позже, если вы не знаете расширение. Он должен работать до тех пор, пока изображение представляет собой формат изображения png или jpg .

Загружаемый файл:

downloadImage(url, savePath);

Загрузить изображение из файла:

byte[] imageBytes = loadImage(savePath);

Поместить изображение в Texture2D:

Texture2D texture;
texture = new Texture2D(2, 2);
texture.LoadImage(imageBytes);
0
задан Mr Ajay 22 March 2019 в 07:17
поделиться