Итак, я получаю Texture2D из плагина камеры и все в порядке.
Затем я сохраняю образ в ПЗУ устройства:
public static void AddImageAtt(Texture2D tex)
{
if (tex == null) { return; }
byte[] bytes = tex.EncodeToJPG();
// Save full image on disk
string name = System.DateTime.Now.ToString("yyyyMMddHHmmssfff") + ".jpg";
string path = GetPathFromName(name);
File.WriteAllBytes(path, bytes);
bytes = null;
Texture2D.Destroy(tex);
}
Затем я могу получить изображение позже:
public static Texture2D GetMainImageFromName(string name)
{
if(string.IsNullOrEmpty(name) == true) { return null; }
string path = GetPathFromName(name);
try
{
byte[] bytes = File.ReadAllBytes(path);
Texture2D t = new Texture2D(1,1);
t.LoadImage(bytes);
t.Apply();
return t;
}catch { return null; }
}
Texture2D идет к изображению, но зеркально отражается по оси x и поворачивается на 90 градусов.
Теперь я могу понять поворот, поскольку при съемке я не сохраняю ориентацию устройства, а как насчет зеркального отображения?
Отлично работает в редакторе. И я не могу вручную установить масштаб и вращение, потому что он используется в прямоугольнике прокрутки и приводит в порядок размеры.
Так почему же все не так? Я попытался EncodeToPng, и он делает то же самое.
Это происходит на всех протестированных устройствах Android (около 10 из них разных марок и поколений).