According to the Vite Docs, one can import a file as a raw data string.
In a svelte project I need to use not just the URL, but the whole image data.
As such, I tried to import image from "@/assets/image.png?raw"
.
However, whatever I try I cannot convert this to a Uint8Array
. I have tried using string.charCodeAt(0)
, string.codePointAt(0)
and all kinds of other stuff.
I expect the first bytes to be 137, 80, 78, 71, 13, 10, 26, 10
as that is the PNG header, but it always comes back as 253, 80, 78, 71, 13, 10, 26, 10
. These discrepancies continue through the whole string.
I have no idea what encoding this is in and as such don't know how to decode it into image data again. I previously tried using fetch()
, but since my origin uses Basic-Auth
that also didn't work (The credentials change from user to user, and I want to avoid having them to type it in again somewhere else - I use https://user:password@example.com
as URL notation).
import image from "@/assets/image.png?raw";
let data = Uint8Array.from([..image].map(x => x.codePointAt(0)));
console.log(data);
// [253, 80, 78, 71, 13, 10, 26, 10, ...]
How can I get the actual image data into my script, without using something like fetch?
The format can be pretty much anything, I use it both as a Uint8Array
and a base64
string, and I can convert between the two. I can also convert from a Blob
/ File
.