bitmap 将图片压缩到指定的大小 JAVA
2013-12-11 16:11
495 查看
private void imageZoom() { //图片允许最大空间 单位:KB double maxSize =400.00; //将bitmap放至数组中,意在bitmap的大小(与实际读取的原文件要大) ByteArrayOutputStream baos = new ByteArrayOutputStream(); bitMap.compress(Bitmap.CompressFormat.JPEG, 100, baos); byte[] b = baos.toByteArray(); //将字节换成KB double mid = b.length/1024; //判断bitmap占用空间是否大于允许最大空间 如果大于则压缩 小于则不压缩 if (mid > maxSize) { //获取bitmap大小 是允许最大大小的多少倍 double i = mid / maxSize; //开始压缩 此处用到平方根 将宽带和高度压缩掉对应的平方根倍 (1.保持刻度和高度和原bitmap比率一致,压缩后也达到了最大大小占用空间的大小) bitMap = zoomImage(bitMap, bitMap.getWidth() / Math.sqrt(i), bitMap.getHeight() / Math.sqrt(i)); } }
private void imageZoom() { //图片允许最大空间 单位:KB double maxSize =400.00; //将bitmap放至数组中,意在bitmap的大小(与实际读取的原文件要大) ByteArrayOutputStream baos = new ByteArrayOutputStream(); bitMap.compress(Bitmap.CompressFormat.JPEG, 100, baos); byte[] b = baos.toByteArray(); //将字节换成KB double mid = b.length/1024; //判断bitmap占用空间是否大于允许最大空间 如果大于则压缩 小于则不压缩 if (mid > maxSize) { //获取bitmap大小 是允许最大大小的多少倍 double i = mid / maxSize; //开始压缩 此处用到平方根 将宽带和高度压缩掉对应的平方根倍 (1.保持刻度和高度和原bitmap比率一致,压缩后也达到了最大大小占用空间的大小) bitMap = zoomImage(bitMap, bitMap.getWidth() / Math.sqrt(i), bitMap.getHeight() / Math.sqrt(i)); } }
public static Bitmap resizeBitMapImage1(String filePath, int targetWidth, int targetHeight) { Bitmap bitMapImage = null; // First, get the dimensions of the image Options options = new Options(); options.inJustDecodeBounds = true; BitmapFactory.decodeFile(filePath, options); double sampleSize = 0; // Only scale if we need to // (16384 buffer for img processing) Boolean scaleByHeight = Math.abs(options.outHeight - targetHeight) >= Math .abs(options.outWidth - targetWidth); if (options.outHeight * options.outWidth * 2 >= 1638) { // Load, scaling to smallest power of 2 that'll get it <= desired // dimensions sampleSize = scaleByHeight ? options.outHeight / targetHeight : options.outWidth / targetWidth; sampleSize = (int) Math.pow(2d, Math.floor(Math.log(sampleSize) / Math.log(2d))); } // Do the actual decoding options.inJustDecodeBounds = false; options.inTempStorage = new byte[128]; while (true) { try { options.inSampleSize = (int) sampleSize; bitMapImage = BitmapFactory.decodeFile(filePath, options); break; } catch (Exception ex) { try { sampleSize = sampleSize * 2; } catch (Exception ex1) { } } } return bitMapImage; }
相关文章推荐
- bitmap 将图片压缩到指定的大小 JAVA
- Java将图片压缩至指定大小
- [Android算法] bitmap 将图片压缩到指定的大小
- [Android算法] bitmap 将图片压缩到指定的大小
- java按比例压缩图片的源代码,用java如何把图片处理到指定大小
- [Android算法] bitmap 将图片压缩到指定的大小
- 【JAVA秒会技术之玩转图片】图片下载和等比或指定大小压缩快速实现
- [Android算法] bitmap 将图片压缩到指定的大小
- bitmap 将图片压缩到指定的大小
- Java - MultipartFile图片上传服务器,并且指定大小压缩
- java按比例压缩图片的源代码,用java如何把图片处理到指定大小
- bitmap 将图片压缩到指定的大小
- bitmap 将图片压缩到指定的大小
- java 压缩图片至指定大小
- [Android算法] bitmap 将图片压缩到指定的大小
- asp.net 图片超过指定大小后等比例压缩图片的方法
- Java实现图片压缩代码,图片大小转换
- android将图片压缩到指定的大小
- 通过google插件Thumbnails实现图片指定大小压缩
- 压缩指定大小的BitMap