В этом примере показано, как получить изображения из 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');
