您的位置:首页 > 其它

压缩

2016-05-18 10:50 267 查看
// 宽高按比例缩放------保证不形变

private Bitmap ScaleCompress() throws IOException {

BitmapFactory.Options newOpts = new Options();

newOpts.inJustDecodeBounds = false;

Bitmap bitmap = BitmapFactory.decodeStream(getAssets()

.open("mmm_1.jpg"), null, newOpts);

System.out.println("qian:" + bitmap.getWidth() + " gao:"

+ bitmap.getHeight());

newOpts.inJustDecodeBounds = true;

bitmap = BitmapFactory.decodeStream(getAssets().open("mmm_1.jpg"),

null, newOpts);

newOpts.inJustDecodeBounds = false;

int w = newOpts.outWidth;

int h = newOpts.outHeight;

System.out.println("w===" + w + " h==" + h);

float hh = 50;

float ww = 50;

int be = 1;

if (w > h && w > ww) {

be = (int) (w / ww);

} else if (h > w && h > hh) {

be = (int) (h / hh);

}

newOpts.inSampleSize = be;

/**

* 通过设置颜色模式可以减小图片的大小,默认是Config.ARGB_8888; 但是,下面的质量压缩没法设置颜色模式,又会变回默认值,

* 所以质量压缩后,图片占用的内存可能增大, ----像素点减少,但是每个点占的位数增加了好多啊

*/

newOpts.inPreferredConfig = Config.RGB_565;

bitmap = BitmapFactory.decodeStream(getAssets().open("mmm_1.jpg"),

null, newOpts);

System.out.println("压缩之后:" + bitmap.getWidth() + " 高:"

+ bitmap.getHeight());

return bitmap;

}

// 质量压缩

private Bitmap QaulityCompress(Bitmap bitmap) throws IOException {

System.out.println("进入质量压缩");

ByteArrayOutputStream out = new ByteArrayOutputStream();

1. //第一个参数---要压缩的图片的格式,如果是PNG的话,就不压缩,

2. //第二个参数,相对的质量比例,注意 只是画质,0表示压缩成小图,到底多小--不知道,100表示尽量和原图一样清晰,但是也会压缩。0-100的其他数组,都会相应的做压缩,但不是严格按照比例,eg:原图是1024B字节的,你写压缩比例为10,压缩后的图坑定小于1024,但绝对不是102B

bitmap.compress(CompressFormat.PNG, 100, out);

bitmap.getWidth();

System.out.println("压缩前的大小:" + out.toByteArray().length);

int polity;

if (out.toByteArray().length <= 10240) {

polity = 100;

System.out.println("大小合适,适当压缩也可以");

} else {

System.out.println("偏大,要压缩");

polity = (int) (100 * (10 * 1024f) / out.toByteArray().length);

System.out.println("压缩比例为:" + polity);

}

out.reset();

bitmap.compress(CompressFormat.JPEG, polity, out);

System.out.println("压缩后的大小:" + out.toByteArray().length);

// }

return bitmap;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: