Loading image from base64 string

Hi

Any idea on how to load an image from a base64 string ?
This is my code but it doesn’t work. If someone can help me to solve it.
Thanks

String ImageBase64 = "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";
Image img;
if(ImageBase64.isNotEmpty()) {
    MemoryOutputStream out;
    bool result = Base64::convertFromBase64(out, ImageBase64);
    if(result) {
        img = ImageFileFormat::loadFrom(out.getData(), out.getDataSize());
    }
}

How are you encoding the image? I don’t know much about Base64 encoding, but when I use the juce::Base64::convertToBase64 method to create the encoded string, it loads my image fine. Relevant code posted below:

Base64AudioProcessorEditor::Base64AudioProcessorEditor (Base64AudioProcessor& p)
    : AudioProcessorEditor (&p), processor (p)
{
    setSize (400, 300);
	File image("C:\\Users\\rory\\Desktop\\bird2.jfif");
	std::unique_ptr<InputStream> inStream(image.createInputStream());
	MemoryBlock mb;
	inStream->readIntoMemoryBlock(mb);
	MemoryOutputStream in;
	Base64::convertToBase64(in, mb.getData(), mb.getSize());
	String ImageBase64 = in.toString();
	if (ImageBase64.isNotEmpty()) {
		MemoryOutputStream out;
		bool result = Base64::convertFromBase64(out, ImageBase64);
		if (result) {
			img = ImageFileFormat::loadFrom(out.getData(), out.getDataSize());
		}
	}
}

void Base64AudioProcessorEditor::paint(Graphics& g)
{
	g.drawImageAt(img, 0, 0);
}