// Pic字段数据类型是 OLE对象,对应存储一副jpg图片 // 获取access库中图片信息
public void getPicInfo(){
String strsql = "select Pic from test where id = 2";
ResultSet resultSet = conndao.getRes(strsql);
if(resultSet!=null)
{
try
{
while(resultSet.next())
{
byte b[] = new byte[200*1024];
int c=0;
InputStream is = resultSet.getBinaryStream("Pic");
c = is.read(b);
int pos = 0;
System.out.println( ""+c +" "+b.length );
for (int j = 0; j < b.length; j++)
{
if(b[j] == new Integer(0xFF).byteValue()
&& b[j+1] == new Integer(0xD8).byteValue()
&& b[j+2] == new Integer(0xFF).byteValue()
&& b[j+3] == new Integer(0xE0).byteValue())
{
pos = j;
break;
}
}
File f = new File("Icon\\demo.jpeg");//先指定一临时图片,存放从数据库中读出的图片
OutputStream fos = new FileOutputStream(f,false);
fos.write(b, pos, c-pos);
fos.flush();
fos.close();
is.close();
System.out.println(pos+" --ok");
}
}
catch (Exception e)
{
e.printStackTrace();
}finally{
conndao.closeResultSet(resultSet);
}
}
}问题是: 读出的数据大小跟文件的实际大小差好多,图片无法生成!
求解答!
public void getPicInfo(){
String strsql = "select Pic from test where id = 2";
ResultSet resultSet = conndao.getRes(strsql);
if(resultSet!=null)
{
try
{
while(resultSet.next())
{
byte b[] = new byte[200*1024];
int c=0;
InputStream is = resultSet.getBinaryStream("Pic");
c = is.read(b);
int pos = 0;
System.out.println( ""+c +" "+b.length );
for (int j = 0; j < b.length; j++)
{
if(b[j] == new Integer(0xFF).byteValue()
&& b[j+1] == new Integer(0xD8).byteValue()
&& b[j+2] == new Integer(0xFF).byteValue()
&& b[j+3] == new Integer(0xE0).byteValue())
{
pos = j;
break;
}
}
File f = new File("Icon\\demo.jpeg");//先指定一临时图片,存放从数据库中读出的图片
OutputStream fos = new FileOutputStream(f,false);
fos.write(b, pos, c-pos);
fos.flush();
fos.close();
is.close();
System.out.println(pos+" --ok");
}
}
catch (Exception e)
{
e.printStackTrace();
}finally{
conndao.closeResultSet(resultSet);
}
}
}问题是: 读出的数据大小跟文件的实际大小差好多,图片无法生成!
求解答!
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货