6 public static Texture2D
LoadPNG(
string _path, FilterMode filter = FilterMode.Point)
8 if (!File.Exists(_path))
13 if (array ==
null || array.Length < 8)
38 Texture2D texture2D =
new Texture2D(width, height, data.
format, data.
mipmap, data.
linear);
39 texture2D.LoadImage(array);
41 texture2D.filterMode = filter;
49 using FileStream input =
new FileStream(_path, FileMode.Open, FileAccess.Read, FileShare.ReadWrite);
50 using BinaryReader binaryReader =
new BinaryReader(input);
51 return binaryReader.ReadBytes((
int)binaryReader.BaseStream.Length);
54 private static bool IsPng(
byte[] data)
56 if (data.Length >= 8 && data[0] == 137 && data[1] == 80 && data[2] == 78 && data[3] == 71 && data[4] == 13 && data[5] == 10 && data[6] == 26)
63 private static bool IsJpeg(
byte[] data)
65 if (data.Length >= 2 && data[0] ==
byte.MaxValue)
67 return data[1] == 216;
72 private static bool TryGetPngSize(
byte[] data, out
int width, out
int height)
88 private static bool TryGetJpegSize(
byte[] data, out
int width, out
int height)
92 while (i + 1 < data.Length)
94 if (data[i] !=
byte.MaxValue)
99 for (; i < data.Length && data[i] ==
byte.MaxValue; i++)
102 if (i >= data.Length)
107 if (b == 218 || b == 217 || i + 1 >= data.Length)
111 int num = (data[i] << 8) | data[i + 1];
118 if (i + 7 >= data.Length)
122 height = (data[i + 3] << 8) | data[i + 4];
123 width = (data[i + 5] << 8) | data[i + 6];
160 if (offset + 3 >= data.Length)
164 return ((data[offset] & 0xFF) << 24) | ((data[offset + 1] & 0xFF) << 16) | ((data[offset + 2] & 0xFF) << 8) | (data[offset + 3] & 0xFF);
static bool TryGetJpegSize(byte[] data, out int width, out int height)
static bool TryGetPngSize(byte[] data, out int width, out int height)
static int ReadIntBigEndian(byte[] data, int offset)
static Texture2D LoadPNG(string _path, FilterMode filter=FilterMode.Point)
static bool IsSofMarker(byte marker)
static bool IsPng(byte[] data)
static byte[] ReadImageFile(string _path)
static bool IsJpeg(byte[] data)