问题描述:用android自带的Camera获取图片,上传至远程数据库中(mysql),以BLOB格式存储,

但在提取图片时,始终无法在android界面显示,示例代码如下:

.....  ....

s = new Socket("192.168.0.68", 9999);
   din = new DataInputStream(s.getInputStream());

...   ...

int size = din.readInt();//读取服务器端传来的图片数据
   byte[] bs = new byte[size];
   din.read(bs);

Bitmap b = BitmapFactory.decodeByteArray(bs,0,bs.length);

Log.i("kkk00",String.valueOf(b));//输出测试,bitmap始终为NUll

解决方法:

方法1:增加转码处理

int size = din.readInt();//读取服务器端传来的图片数据
   byte[] bs = new byte[size];
   din.read(bs);

YuvImage yuvimage=new YuvImage(bs, ImageFormat.NV21, 20,20, null);//20、20分别是图的宽度与高度
       ByteArrayOutputStream baos = new ByteArrayOutputStream();
       yuvimage.compressToJpeg(new Rect(0, 0,20, 20), 80, baos);//80--JPG图片的质量[0-100],100最高
       byte[] jdata = baos.toByteArray();

Bitmap bmp = BitmapFactory.decodeByteArray(jdata, 0, jdata.length);

测试:bmp不为空,放入控件中可正常显示。

方法2:当图片以二进制形式传至服务器端时,将其存储到本机上,在以文件流的形式存入mysql数据库中

.......

int size = din.readInt();//读取图片数组的长度
     FileOutputStream fos = new FileOutputStream("c:/bbbb1.bmp"); 
     int len=0;
     byte[] mm=new byte[1024];
     while(true) {
      int m=din.read(mm);
      len=len+m;
      fos.write(mm,0,m);
      if(len>=size) break; 
     }
     fos.close();

//在读取文件写入mysql

..... ...

File file = new File("c:/bbbb1.bmp");  
     int length = (int) file.length();   
    InputStream fin = new FileInputStream(file); 
    pstmt.setBinaryStream (9, fin, length);

BitmapFactory.decodeByteArray() 返回null,分析与解决的更多相关文章

  1. 安卓BitmapFactory.decodeStream()返回null的问题解决方法

    问题描述: 从网络获取图片,数据为InputStream流对象,然后调用BitmapFactory的decodeStream()方法解码获取图片,返回null. 代码如下: private Bitma ...

  2. Flash的坑之ExternalInterface.call只返回null值的解决办法

    flash坑太多了,要确保能有效的使用ExternalInterface.call调用js的话,需要两个条件: 1.allowScriptAccess="always" 2.id= ...

  3. Spring—Document root element "beans", must match DOCTYPE root "null"分析及解决方法

    网上很多人说要把applicationContex.xml文件中加上如下第二行的<!DOCTYPE/>标签,说明DTD.<?xml version="1.0" e ...

  4. 解决miner.start() 返回null

    下面我列举了三种解决方案,前面两张是某两位大佬试出来的,第三种是我蒙出来的. 第一种解决方案 转载自  http://mp.weixin.qq.com/s/AB9vj1EzOgWT7JyryfQhDg ...

  5. PHP解码Json(json_decode)字符串返回NULL的原因及解决方法(转载)

    本文主要为大家讲解了php在使用json_decode函数解码json字符串时,解码不成功返回NULL的问题原因分析和解决方法,感兴趣的同学参考下. 一般来说,php对json字符串解码使用json_ ...

  6. BitmapFactory.decodeStream()获取bitmap返回null

    正常的图片缩放代码如: ByteArrayOutputStream baos = new ByteArrayOutputStream(); arg1.compress(Bitmap.CompressF ...

  7. JavaScript中的ParseInt("08")和“09”返回0的原因分析及解决办法

    今天在程序中出现一个bugger ,调试了好久,最后才发现,原来是这个问题. 做了一个实验: alert(parseInt("01")),当这个里面的值为01====>07时 ...

  8. Android Fragment getActivity返回null解决

    在Android开发中,如果我们用到V4包里面的Fragment,在应用被切换到后台的时候,Activity可能被回收,但是创建的所有Fragment则会被保存到Bundle里面,下面是Fragmen ...

  9. Type.GetType()在跨程序集反射时返回null的解决方法

    在开发中,经常会遇到这种情况,在程序集A.dll中需要反射程序集B.dll中的类型.如果使用稍有不慎,就会产生运行时错误.例如使用Type.GetType("BNameSpace.Class ...

随机推荐

  1. Oracle10g、 Oracle11g完美共存

    Oracle10g. Oracle11g完美共存           环境描述 客户服务器上已经安装Oracle9i软件并部署多套数据库,现在客户要求安装Oracle11g软件,并且创建11g数据库, ...

  2. 【USACO 1.2.1】挤牛奶

    [问题描述] 三个农民每天清晨5点起床,然后去牛棚给3头牛挤奶.第一个农民在300时刻(从5点开始计时,秒为单位)给他的牛挤奶,一直到1000时刻.第二个农民在700时刻开始,在 1200时刻结束.第 ...

  3. openMPI小集群安装

    经过一天的努力,终于完成了openMPI的多节点安装,即小集群安装.本文使用的是openmpi-1.6.5,下载地址见:http://www.open-mpi.org/software/ompi/v1 ...

  4. JavaScript设计模式之单例模式

    一.单例模式概念 单例就是保证一个类只有一个实例,实现方法一般是先判断实例存在与否,如果存在直接返回,如果不存在就创建了再返回,这就确保了一个类只有一个实例对象.在JavaScript里,单例作为一个 ...

  5. FMDB警告Warning: there is at least one open result set around after performing的问题

    FMDB操作sqlite的时候总是报警告Warning: there is at least one open result set around after performing,后来发现是执行查询 ...

  6. jquery 插件大全

    1.jquery.roundabout.js 超棒的左右3D旋转式幻灯片jQuery插件 2.jquery validate.js 验证表单 3.jquery ui插件 对话框 日期 4.lhgdia ...

  7. ThinkPHP 发送post请求

    function post($url, $param=array()){ if(!is_array($param)){ throw new Exception("参数必须为array&quo ...

  8. PHP5的对象复制

    今天用yii开发程序,一个bug改了一晚上,最后发现问题出在了对象复制机制上,PHP5之前的对象复制只需要$object_a = $object_b即可,但PHP5这样得到的是浅复制,及指针指向,并不 ...

  9. PHP错误报告级别及调整方法

    运行PHP脚本时,PHP解析器会尽其所能能报告它遇到的问题.在PHP中错误报告的处理行为,都是通过PHP的配置文件php.ini中有关的配置指令确定的.另外PHP的错误报告有很多种级别,可以根据不同的 ...

  10. 使用微妙计算PHP脚本执行时间

    在PHP中,大多数的时间格式都是以UNIX时间戳表示的,而UNIX时间戳是以s(秒)为最小的计量时间的单位.这对某些应用程序来说不够精确,所以可以调用microtime()返回当前UNIX时间戳和微妙 ...