Basically I am loading profile picture from Gallery section of android/iPhone devices. So game player may select any image format. So at server upload time, I need to specify which format image, player has selected. Basically from local storage loading, I am using this way:
selectedImagePath.Replace(" ","%20");
WWW localFile = new WWW ("file://" + selectedImagePath);
yield return localFile;
if (localFile.error == null)
Debug.Log ("Loaded file successfully");
else
Debug.Log ("Open file error: " + localFile.error);
So which way I need to detect file type as png/jpg/gif?
Please give me some help in this.
Assuming you don’t trust or don’t have access to the file extension, you can look at the image’s [magic number][1].
private bool CheckMagicNumber(byte [] bytes, byte [] magic)
{
bool match = true;
for (int i = 0; i < magic.Length && match; i++)
match = match && magic _== bytes*;*_
* return match;*
}
and then…
selectedImagePath.Replace(" ", “%20”);
WWW localFile = new WWW(“file://” + selectedImagePath);
yield return localFile;
byte[] PNG = { 0x89, 0x50, 0x4E, 0x47 };
byte[] JPG = { 0xFF, 0xD8 };
byte[] GIF = { 0x47, 0x49, 0x46, 0x38 };
if (localFile.error == null)
{
* Debug.Log(“Loaded file successfully”);*
* if (CheckMagicNumber(localFile.bytes, PNG))*
* Debug.Log(“It’s a PNG!”);*
* else if (CheckMagicNumber(localFile.bytes, JPG))*
* Debug.Log(“It’s a JPG!”);*
* else if (CheckMagicNumber(localFile.bytes, GIF))*
* Debug.Log(“It’s a GIF!”);*
}
else
* Debug.Log("Open file error: " + localFile.error);*
_*[1]: https://asecuritysite.com/forensics/magic*_