2013-10-25 95 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