Этот пример показывает, как получить изображения из базы данных Microsoft® Access™. Чтобы запустить этот пример, задайте функциональный parsebinary
с помощью этого кода.
function [x,map] = parsebinary(o,f) %PARSEBINARY Write binary object to disk and display if image. % [X,MAP] = PARSEBINARY(O,F) writes the binary object in O to disk % in the format specified by F. If the object is an image, % display the image. This file was released for demonstration % purposes only. A Microsoft(R) Access(TM) database contains image data. % Use an ODBC driver to read the data. This function writes % any temporary files to the current working directory. % % Valid file formats are: % % BMP Bitmap % DOC Microsoft(R) Word document % GIF GIF file % PPT Microsoft(R) Powerpoint(R) file % TIF TIF file % XLS Microsoft(R) Excel(R) spreadsheet % PNG Portable Network Graphics % Transform object into vector of data v = java.util.Vector; v.addElement(o); bdata = v.elementAt(0); % Open file to write data to disk fid = fopen(['testfile.' lower(f)],'wb'); % n specifies the end point of data written to disk n = length(bdata); % File type determines how many bytes of header data that % the ODBC driver prepended to the data. switch lower(f) case 'bmp' m = 79; case 'doc' m = 86; case 'gif' m = 5722; case 'png' m = 182; n = length(bdata)-285; case 'ppt' m = 94; case 'tif' m = 6472; case 'xls' m = 83; otherwise error(message('database:parsebinary:unknownFormat')) end % Write data to disk fwrite(fid,bdata(m:n),'int8'); fclose(fid); % Display if image switch lower(f) case {'bmp','tif','gif','png'} [x,map] = imread(['testfile.' lower(f)]); imagesc(x) colormap(map) case {'doc','xls','ppt'} % Microsoft(R) Office formats % Insert path to Microsoft(R) Word or Microsoft(R) Excel(R) % executable here to run from MATLAB(R) prompt. % For example: % !d:\msoffice\winword testfile.doc end
Соединитесь с источником данных Microsoft Access с помощью драйвера ODBC. База данных содержит таблицу Invoice
.
conn = database('datasource','','');
Импортируйте InvoiceNumber
и столбцы Receipt
данных из Invoice
.
sqlquery = 'SELECT InvoiceNumber,Receipt FROM Invoice';
results = fetch(conn,sqlquery);
Просмотрите импортированные данные.
results
ans = 10×2 table InvoiceNumber Receipt _____________ _________________ 2101 [1948410×1 uint8] 3546 [2059994×1 uint8] 33116 [ 487034×1 uint8] 34155 [2059994×1 uint8] 34267 [2454554×1 uint8] 37197 [1926362×1 uint8] 37281 [2403674×1 uint8] 41011 [1920474×1 uint8] 61178 [2378330×1 uint8] 62145 [ 492314×1 uint8]
Присвойте элемент изображения, который вы хотите к переменной receipt
.
receipt = results.Receipt{1};
Запустите функцию parsebinary
. Функция пишет полученные данные в файл, информацию о заголовке ODBC полос от него и отображения receipt
как растровое изображение в окне рисунка. Гарантируйте, что ваша текущая папка перезаписываема так, чтобы функция parsebinary
могла записать выходные данные.
cd 'I:\MATLABFiles\myfiles' parsebinary(receipt,'BMP');