2017-12-25 19 views
0

Ich habe die folgende Base64-Zeichenfolge, die ein Bild ist: Link to base64 image und ich möchte das Bild in Matlab zurück. Ich habe die folgende Website verwendet, um zu überprüfen, ob das Bild gültig ist: https://codebeautify.org/base64-to-image-converter und es funktionierte ohne Probleme.Wie liest man base64-Bilder in MATLAB aus?

Wenn das Bild herunterzuladen, nachdem es von der Website Decodierung, erhalte ich folgende Informationen:

Das Bild der Größe 512x512 und eine Bittiefe von 32 Bit hat. Außerdem weiß ich, dass dies ein Farbbild ist.

Ich habe den hier genannten Ansatz Decode base64 to RGB image in matlab versucht, der die Apache-Bibliothek verwendet. Wenn jedoch mit dem folgenden Code:

result = native2unicode(base64.decode(uint8(img)).'); 

wo img ist der Base64-String, wird Ergebnis ein 599636 langer char-Array sein. Jedoch, 512*512*3 = 786432.

Ich frage mich, wie man von hier fortfahren, um das 512 * 512 Farbbild zu bekommen?

Edit:

Meine aktuelle Problemumgehung ist die base64 kodierte Bild in eine Textdatei zu schreiben, und lesen Sie es über Python aus, und schreiben Sie es als Bild auf der Disk, und es in Matlab neu zu laden. Was funktioniert, ist aber sehr, sehr hässlich. In Python funktioniert es mit dem einfachen Skript:

import base64 
f = open('test.txt','r') 
message = f.read() 
print(message) 
with open("imageToSave.png", "wb") as fh: 
    fh.write(base64.decodebytes(bytearray(message,'utf-8'))) 

Antwort

1
% Create a Java Base64 instance... 
import('org.apache.commons.codec.binary.Base64'); 
base64 = Base64(); 

% Read the content of the file as text... 
text = fileread('test.txt'); 
text = strtrim(text); 

% Decode the text into a byte array... 
img_bytes = base64.decode(text_bytes); 

% Fill a temporary file with the decoded byte array... 
fid = fopen('test.bin','w'); 
fwrite(fid,img_bytes,'int8'); 
fclose(fid); 

% Read the temporary file as image and show the image... 
img = imread('test.bin'); 
imshow(img); 
+0

Danke Ich werde versuchen, dass - ist es möglich, das Bild zuzugreifen, ohne dass es auf die Festplatte zu schreiben? – Kev1n91

+0

Ich habe keine schnelle vorgefertigte Lösung gefunden, aber es muss eine geben. –

Verwandte Themen