问题描述:用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. javadoc in archive eclipse.

    Open Windows -> Preferences. 2.Select jre from Installed JREs then hit Edit botton on the right. ...

  2. linux File Handling commands 'ls'.

    ref:Linux / Unix Command: ls NAME ls - list directory contents SYNOPSIS ls [OPTION]... [FILE]... DES ...

  3. 重新开始学习javase_集合_Map

    一,Map之HashMap(转:http://blog.csdn.net/zheng0518/article/details/42197049) 1.    HashMap概述: HashMap是基于 ...

  4. 【USACO 1.4.3】等差数列

    [题目描述] 一个等差数列是一个能表示成a, a+b, a+2b,..., a+nb (n=0,1,2,3,...)的数列. 在这个问题中a是一个非负的整数,b是正整数.写一个程序来找出在双平方数集合 ...

  5. Unique Binary Search Tree

    Given n, how many structurally unique BST's (binary search trees) that store values 1...n? For examp ...

  6. Linux硬盘命名和安装分区

    硬盘命名: 硬盘命名基于文件,一般有如下文件方式: /dev/hda1 /dev/sdb3 具体含义如下: /dev:是所有设备文件存放的目录. hd和sd:他们是区别的前两个字母,代表该分区所在的设 ...

  7. Python datetime time 常用操作

    测试版本: Python 2.7 获取当前时间的两种方法 import datetime,time now = time.strftime("%Y-%m-%d %H:%M:%S") ...

  8. 12_RHEL7.1普通用户添加sudo权限

    1.关于sudo Sudo是linux系统中,非root权限的用户提升自己权限来执行某些特性命令的方式,它使普通用户在不知道超级用户的密码的情况下,也可以暂时的获得root权限.          一 ...

  9. WINFORM的DataGridView使用点滴

    1.如果有超过一屏的数据,想通过关键字查找到相关记录,然后再定位之,做法如下:遍历所有行,把某单元格的值和关键字对比,找到后清除所有选择行,然后把当前行设为选择,然后把grid的CurrentCell ...

  10. ActiveX相关

    ActiveX 1.创建ActiveXhttp://blog.csdn.net/fww330666557/article/details/6533118 继承IObjectSafety接口http:/ ...