2013-10-25 101 views
-1

是否可以使用MatLab插入或保存圖像到數據庫表?MatLab使用數據庫工具箱將圖像保存到數據庫

這裏是我的代碼:

%Code for Database Login 
conn = database('vlmsystem','admin','vlog'); 
indata = imread('C:\Users\Sony Vaio\Documents\Task\0.1 Systems\System 1 - edited\Appendix\images database\auto1.jpg'); 
a = getframe(h); 
indata = a.cdata; 
hgsave(h, 'tempfile.fig') 
fid = fopen('tempfile.fig', 'r') 
indata = fread(fid, inf, '*uint8') 
fclose(fid) 
s = size(indata); 
bdata = reshape(indata,[],1); 
x = conn.Handle 
StatementObject = x.preparestatement(insertcommand); 
StatementObject.setObject(1,bdata) 
StatementObject.execute 
close(StatementObject) 
dbpath = 'C:\Users\Sony Vaio\Documents\Task\0.1 Systems\System 1 - edited\Appendix\vlogdbase.mdb'; 
tableName = 'vehicleLog'; 
colnames = {'date_time','plate_number','login_logout','physical_feature'} 
colnames1 = {'date_time'} 
colnames2 = {'plate_number'} 
colnames3 = {'login_logout'} 
colnames4 = {'physical_feature'} 
dat = datestr(now); 
pltno = (f); 
lilo = 'login'; 
physf = {bdata} 
coldata = {dat,pltno,lilo,} 
insert(conn,tableName,colnames,coldata); 
close(conn); 

而且我得到這個錯誤。使用graphicsversion輸入

錯誤不是有效的圖形對象中的getFrame

誤差(線50)usingMATLABClasses = 〜graphicsversion(parentFig, 'handlegraphics');

牌照錯誤> StartKnop_Callback(第248行)a = getframe(h);

試圖複製此解決方案,但我似乎無法使其工作。這裏是link

編輯:修復代碼....但...如何將二進制數據插入數據庫。 數據庫中沒有二進制選項。結果不會輸入到表格中。

enter image description here

%Code for Database Login 
conn = database('vlmsystem','admin','vlog'); 
indata = imread('C:\Users\Sony Vaio\Documents\Task\0.1 Systems\System 1 - edited\Appendix\images database\auto1.jpg'); 
s = size(indata); 
bdata = reshape(indata,[],1); 
dbpath = 'C:\Users\Sony Vaio\Documents\Task\0.1 Systems\System 1 - edited\Appendix\vlogdbase.mdb'; 
tableName = 'vehicleLog'; 
colnames = {'date_time','plate_number','login_logout','physical_feature'} 
colnames1 = {'date_time'} 
colnames2 = {'plate_number'} 
colnames3 = {'login_logout'} 
colnames4 = {'physical_feature'} 
dat = datestr(now); 
pltno = (f); 
lilo = 'login'; 
physf = {bdata} 
coldata = {dat,pltno,lilo,physf} 
insert(conn,tableName,colnames,coldata); 
close(conn); 
+0

錯誤是由'a = getframe(h);'提出的,但我們不知道'h'是什麼,因此不知道。 – Daniel

回答

1

請仔細閱讀您的複印內容。

的解決方案表示:

或者,如果你有一個數字,要保存它的一個快照,使用下面的命令:

複製兩個區塊,一個讀取文件,一個帽子使用getframe從句柄中讀取一幀。

+0

我知道我只是將整個代碼複製到鏈接上我試圖指出的是我不知道應該把什麼放在h上,什麼價值或什麼。但是可以保存/插入圖像到數據庫嗎?就像它會如何保存一樣? – lloydknight

+0

@Lloyd:如果你理解來自文件的輸入,而不是來自句柄的輸入,你爲什麼要同時使用?使用來自文件的輸入,一切都很好。沒有必要兩次填寫indata。 – Daniel