我在 Matlab 环境中为一个项目工作,我必须解码从数据库服务器以 xml 接收的 RGB 图像,该图像以 base64 格式编码。我成功地将图像转换为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 中使用它们。请在这方面帮助我。