私はプロジェクトの Matlab 環境で作業しており、base64 形式でエンコードされたデータベース サーバーから xml で受信した RGB 画像をデコードする必要があります。画像をbase64に変換し、xmlに変換してデータベースに投稿することに成功しました。base64encode/decodeを使用してイメージを base64 にエンコードし、以下のプログラムを添付しました。問題は、base64decode 関数を使用して画像を base64 から再変換しようとした場合です。それは単に機能しません。
これは、画像をbase64に変換してxmlにエンコードするための私のプログラムです。
function image2xml(test_directory)
% Images in directory ---> byte array format in XML
% This function encodes all the images available in the test directory into
% byte array/base 64 format and saves them in xml with the following
% properties
% Packs the image(byte array) and its name as timestamp to xml
% Uses functions from the following source
% http://www.mathworks.de/matlabcentral/fileexchange/12907-xmliotools
% Following functions from the above source are to be added to path,while
% running this function
% xml_write.m
% xml_read.m
%% ========================================================================
files=dir(test_directory)
% delete('test_image_xml\*.xml');
% If not database_mat is included in the function arguments
for i = 1:size(files,1)
k=0;
if files(i).isdir()==0
%extracts name with which it savesa as xml
[~, name_to_save,~ ] = fileparts(files(i).name)
filename = fullfile([test_directory,'\',files(i).name])
fid = fopen(filename);
raw_data = uint8(fread(fid));% read image file as a raw binary
fclose(fid);
%Definition of xml tags
image_imagedetails = [];
% name of the file is assumed to be the timestamp
image_imagedetails.timestamp =name_to_save;
%imagescan.imagebyte64.ATTRIBUTE.EncodingMIMEType = 'base64';
image_imagedetails.imagebase64 = base64encode(raw_data);% perform base64 encoding of the binary data
%saves all the xml files into the predefined directory
mkdir('images_and_timestamp_xml');
filename = ['images_and_timestamp_xml\' name_to_save,'.xml' ];
post_data = xml_write(filename, image_imagedetails);
end
end
最後に、次を使用して、base64 形式の画像で作成された xml を画像に再変換しますが、残念ながら機能せず、画像に変換できない奇妙な文字がスローされます。さらに、文字列を画像に変換する方法についても手がかりがありません。
filename = '...\IMAG0386.xml';
tree = xml_read(filename);
image = tree.imagebase64;
K = base64decode(tree.imagebase64)) %test image retrieval --> only the string
そして、matlabでJavaコードを使用するなどの他のオプションを試しましたが、matlabでコードを使用する方法がわかりません。C#、Java には多くのオプションがありますが、matlab でそれらを使用する方法についてはわかりません。この点で私を助けてください。