diff --git a/Packages/UniGLTF/Runtime/UniGLTF/IO/GltfData.cs b/Packages/UniGLTF/Runtime/UniGLTF/IO/GltfData.cs index 7b5af2972..7126eca66 100644 --- a/Packages/UniGLTF/Runtime/UniGLTF/IO/GltfData.cs +++ b/Packages/UniGLTF/Runtime/UniGLTF/IO/GltfData.cs @@ -397,6 +397,24 @@ namespace UniGLTF { return null; } + + // for Data URI + if (uri.StartsWith("data:", StringComparison.Ordinal)) + { + var headerEnd = uri.IndexOf(','); + if (headerEnd < 0) + { + return null; + } + + const int dataPrefixLength = 5; // "data:".Length + var header = uri[dataPrefixLength..headerEnd]; + var semicolonPos = header.IndexOf(';'); + var mime = semicolonPos >= 0 ? header[..semicolonPos] : header; + + return mime is "image/png" or "image/jpeg" ? mime : null; + } + var ext = System.IO.Path.GetExtension(uri).ToLowerInvariant(); switch (ext) {