所以我从相机插件中获取了Texture2D,一切都很好。 然后我将图像存储在设备的ROM中:
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个来自不同的品牌和代)。
答案 0 :(得分:0)
您可以存储镜像图像,但我认为它不是解决您问题的好方法。
您可以使用此代码镜像texture2D:
Texture2D FlipTexture(Texture2D original) {
Texture2D flipped = new Texture2D(original.width,original.height);
int xN = original.width;
int yN = original.height;
for (int i=0;i<xN;i++) {
for (int j=0;j<yN;j++) {
flipped.SetPixel(xN-i-1, j, original.GetPixel(i,j));
}
}
flipped.Apply();
return flipped;
}