2017-12-25 29 views
0

私は画像である次のbase64文字列を持っています:Link to base64 image そして私はMatlabで画像を取り戻したいと思います。私は画像が有効であるかどうか確認するために次のウェブサイトを使用しました:https://codebeautify.org/base64-to-image-converterそして問題なく動いていました。MATLABでbase64イメージを読み込む方法は?

ウェブサイトから、それを復号化した後の画像をダウンロードする場合、私は以下の情報を得る:

画像は512×512のサイズと32ビットのビット深度を持ちます。さらに、私はこれがカラー画像であることを知っています。

私はApacheライブラリを利用するDecode base64 to RGB image in matlabというここに述べたアプローチを試しました。しかし、次のコードを使用する場合:imgはbase64文字列である

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

は、結果は599636長いchar配列であろう。しかし、512*512*3 = 786432

ここから進んで、512 * 512色の画像を得る方法が不思議ですか?

編集:

私の現在の回避策は、テキストファイルにbase64で符号化された画像を書き、そしてパイソンを経由して、それを読み出して、イメージとしてディスクに書き込み、MathWorks社のMATLABでそれをリロードすることです。これはうまくいくが、非常に醜い。 Pythonでは、それは簡単なスクリプトで動作します:

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'))) 

答えて

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

はありがとう、私はそれをしようとする - それは、それをディスクに書き込むことなく、画像にアクセスすることは可能でしょうか? – Kev1n91

+0

簡単な既製のソリューションは見つかりませんでしたが、1つあるはずです。 –

関連する問題