var pngExporterx = new PngExporter { Width = 600, Height = 400, Background = OxyColors.White };
pngExporterx.ExportToFile(plot2, "Assets/DCUnityOutput.png");
var pngImage = LoadPNG("Assets/DCUnityOutput.png");
Не могли бы вы объяснить мне - почему он работает во время отладки Windows и не работает, когда я устанавливаю приложение на мобильное устройство?
PNGExporter от Oxyplot для winForms.
На своем телефоне я проверил разрешение на хранение данных, но ничего не произошло. Есть ли разница в хранении данных приложений в Android / Windows? Каким будет решение для экспорта изображения .png и его повторного импорта?
Заранее спасибо!





Я вижу причины два, по которым это не работает в сборке на Android:
1. Место, где вы его сохраняете.
Вы сохраняете изображение в "Assets / DCUnityOutput.png", но каталог "Ресурсы" существует в редакторе только при открытии проекта. После его создания каталога "Ресурсы" больше нет. Всегда сохраняйте по пути Application.persistentDataPath.
2. Зависимости плагина PngExporter.
Плагин PngExporter, который вы используете, зависит от некоторых API-интерфейсов WPF и WinForm, которые не поддерживаются на мобильных устройствах. При использовании Unity избегайте использования случайных библиотек C#, если вы не уверены, что они не зависят от WPF и WinForm API.
Сохранять и загружать изображения в Unity действительно легко, при этом не требуется WPF и WinForm API.
Сохранить:
string tempPath = Path.Combine(Application.persistentDataPath, "images");
tempPath = Path.Combine(tempPath, "DCUnityOutput.png");
File.WriteAllBytes(tempPath, pngImageByteArray);
Нагрузка:
byte[] pngImageByteArray = null;
string tempPath = Path.Combine(Application.persistentDataPath, "images");
tempPath = Path.Combine(tempPath, "DCUnityOutput.png");
pngImageByteArray = File.ReadAllBytes(tempPath);
Создайте Textue2D из массива байтов png / jpeg:
Texture2D tempTexture = new Texture2D(2, 2);
tempTexture.LoadImage(pngImageByteArray);
Экспортируйте / сохраните Texture2D как png:
byte[] pngImageByteArray = tempTexture.EncodeToPNG();
string tempPath = Path.Combine(Application.persistentDataPath, "images");
tempPath = Path.Combine(tempPath, "DCUnityOutput.png");
File.WriteAllBytes(tempPath, pngImageByteArray);
Спасибо, ваше решение мне очень помогло. Если честно - мне нужно использовать библиотеку oxyplot, я не нашел библиотеки для единства для создания графиков, поэтому я использовал эту. Как вы упомянули, проблема была в папках. В любом случае. Еще раз спасибо, хорошего дня! ;)