zoukankan      html  css  js  c++  java
  • BitmapFactory.decodeByteArray() 返回null,分析与解决

    问题描述:用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);

  • 相关阅读:
    开启ecstore隐藏的功能
    对接ECOS框架(含ecstore、ocs、erp等产品)的方法【其他系统请求ecos的api接口】
    shopex 网店系统基于云登录系统的信任登录设置
    怎样获取机器码
    windows 无法连接远程桌面
    ecos框架中data/ 目录下img*文件数量过多的问题
    mac 下brew解决php安装问题
    20140708 总结
    20140705 总结
    bzoj 2751
  • 原文地址:https://www.cnblogs.com/exmyth/p/4773965.html
Copyright © 2011-2022 走看看