Thread overview
How do I convert a Base64 image url string to a png/jpg image file?
Jul 30, 2020
aberba
Jul 30, 2020
Adam D. Ruppe
Jul 30, 2020
aberba
July 30, 2020
So I have a base64 image url string and I'm trying to generate a png,jpg image file from it.

I'm able to decode it to a buffer but the trouble is getting it from buffer to an actual image file. Any library function combination I can use?
July 30, 2020
On Thursday, 30 July 2020 at 12:22:46 UTC, aberba wrote:
> I'm able to decode it to a buffer but the trouble is getting it from buffer to an actual image file. Any library function combination I can use?

I don't think I wrote it as a library yet, but the idea is pretty simple: they all start with "data:" so you look for that.

Then there's a type after that, so you read the string until the next ; character. It will be like image/png or image/jpeg.

Then there's the semicolon and the string "base64,".

After that, the rest of the string is base64 data.

```
import std.base64;
ubyte[] data = Base64.decode(rest_of_string);
```

And now that you have the data you can write it to a file:

```
import std.file;
std.file.write("filename.png", data);
```

And that should make the file you want.
July 30, 2020
On Thursday, 30 July 2020 at 12:28:08 UTC, Adam D. Ruppe wrote:
> On Thursday, 30 July 2020 at 12:22:46 UTC, aberba wrote:
>> [...]
>
> I don't think I wrote it as a library yet, but the idea is pretty simple: they all start with "data:" so you look for that.
>
> Then there's a type after that, so you read the string until the next ; character. It will be like image/png or image/jpeg.
>
> Then there's the semicolon and the string "base64,".
>
> After that, the rest of the string is base64 data.
>
> ```
> import std.base64;
> ubyte[] data = Base64.decode(rest_of_string);
> ```
>
> And now that you have the data you can write it to a file:
>
⅞iii> import std.file;
> std.file.write("filename.png", data);
> ```
>
> And that should make the file you want.

Thank Adam.