解决方案 »

  1.   

    decode之前和decode之后在压缩compress不一致导致,原图是jpeg?不一定!原图有没有做其他修改,比如扩展名本来不是jpeg,也有可能~主要是compress的问题
      

  2.   

            Bitmap bitmap = null;  
            BitmapFactory.Options options = new BitmapFactory.Options();  
            options.inJustDecodeBounds = true;  
            bitmap = BitmapFactory.decodeFile(getRealFilePath(context,uri), options);
            options.inJustDecodeBounds = false; // 设为 false 
            
            int w = options.outWidth;  
            int h = options.outHeight; 
            float hh = 500f;//这里设置高度为800f  
            float ww = 300f;//这里设置宽度为480f  
           
            int be = 1;
           
            if (w/h >= ww/hh) {//如果宽度大的话根据宽度固定大小缩放  
                be = (int) (options.outWidth / ww);  
            } else{//如果高度高的话根据宽度固定大小缩放  
                be = (int) (options.outHeight / hh);  
            }  
            if (be <= 0)  {
             be = 1; 
            }
            
            options.inSampleSize=be;
            System.err.println(be+":::"+options.outMimeType);
    bitmap = BitmapFactory.decodeFile(getRealFilePath(context, uri), options);
      try {
       int size = bitmap.getRowBytes()*bitmap.getHeight();
       ByteArrayOutputStream bos = new ByteArrayOutputStream(); 
        bitmap.compress(CompressFormat.JPEG,100, bos);
        bitmap = BitmapFactory.decodeByteArray(bos.toByteArray(), 0, bos.toByteArray().length);
    bos.close();
     System.err.println(size+"::::"+bos.toByteArray().length+":::"+bitmap.getRowBytes()*bitmap.getHeight());
    } catch (IOException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }
            return bitmap;这是我这边的代码 ,,我最后是吧bitmap转换成输入流传到服务器上去的
    服务器上的图片会比手机上的图片大好多