Load External JPG as TextAsset
I have code that takes an image file and converts it to bytes. If I rename an image manually by adding ".bytes" then drag it into the Inspector slot of variable imageAsset, the code below works great:
public TextAsset imageAsset;
     int width = Screen.width;
     int height = Screen.height;
     var tex = new Texture2D(width, height, TextureFormat.RGB24, false);
     tex.LoadImage(imageAsset.bytes);
     tex.Apply();
     
     byte[] bytes = tex.EncodeToPNG();
     Destroy(tex);
The problem I have is that I want to perform the same operation for Android images.
 The pathname is already captured (e.g. /storage/emulated/0/Pictures/IMG_20180318.jpg) in: private string toPathname;
I'm not sure how I would use the pathname of the image to process the actual image the same way I do when dragging the image to the Inspector variable slot for imageAsset.
Thanks in advance, I've been struggling with this one,
 Lee 
Answer by Bunny83 · Mar 19, 2018 at 05:28 AM
Well, first of all an TextAsset is an asset registrated in the assetdatabase of your project. TextAssets can only be created inside the UnityEditor so an external file will never become a TextAsset.
To read external files you can either use the WWW class of Unity inside a coroutine or simply use the .NET File class and use the static ReadAllBytes method.
Also note that creating such a large texture is just a waste of memory as when you call LoadImage the image will be replaced anyways. So just do something like this:
 public static byte[] ConvertToPng(string aPath)
 {
     bytes[] data = System.IO.File.ReadAllBytes(aPath);
     var tex = new Texture2D(1, 1, TextureFormat.RGB24, false);
     tex.LoadImage(data);
     tex.Apply();
     byte[] bytes = tex.EncodeToPNG();
     Destroy(tex);
     return bytes;
 }
Thank you very much. I think this has definitely helped me. The whole process is still not working, but it's likely something other than the file now. I am attempting to send it to a facial recognition service and it hangs when it calls the API. Thanks again, Lee
Your answer
 
 
              koobas.hobune.stream
koobas.hobune.stream 
                       
                
                       
			     
			 
                