6 public static Texture2D
LoadPNG(
string _path, FilterMode filter = FilterMode.Point)
8 return Load(_path, filter,
null);
11 public static Texture2D
Load(
string _path, FilterMode filter, Vector2Int? mipmap)
13 if (!File.Exists(_path))
18 if (array ==
null || array.Length < 8)
43 bool flag = mipmap.HasValue && (width > mipmap.Value.x || height > mipmap.Value.y);
44 Texture2D texture2D =
new Texture2D(width, height, data.
format, data.
mipmap || flag, data.
linear);
45 texture2D.LoadImage(array);
47 texture2D.filterMode = (flag ? FilterMode.Trilinear : filter);
55 using FileStream input =
new FileStream(_path, FileMode.Open, FileAccess.Read, FileShare.ReadWrite);
56 using BinaryReader binaryReader =
new BinaryReader(input);
57 return binaryReader.ReadBytes((
int)binaryReader.BaseStream.Length);
60 private static bool IsPng(
byte[] data)
62 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)
69 private static bool IsJpeg(
byte[] data)
71 if (data.Length >= 2 && data[0] ==
byte.MaxValue)
73 return data[1] == 216;
78 private static bool TryGetPngSize(
byte[] data, out
int width, out
int height)
94 private static bool TryGetJpegSize(
byte[] data, out
int width, out
int height)
98 while (i + 1 < data.Length)
100 if (data[i] !=
byte.MaxValue)
105 for (; i < data.Length && data[i] ==
byte.MaxValue; i++)
108 if (i >= data.Length)
113 if (b == 218 || b == 217 || i + 1 >= data.Length)
117 int num = (data[i] << 8) | data[i + 1];
124 if (i + 7 >= data.Length)
128 height = (data[i + 3] << 8) | data[i + 4];
129 width = (data[i + 5] << 8) | data[i + 6];
166 if (offset + 3 >= data.Length)
170 return ((data[offset] & 0xFF) << 24) | ((data[offset + 1] & 0xFF) << 16) | ((data[offset + 2] & 0xFF) << 8) | (data[offset + 3] & 0xFF);
static Texture2D Load(string _path, FilterMode filter, Vector2Int? mipmap)
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)