美文网首页
图片简单处理

图片简单处理

作者: f44148db1e8c | 来源:发表于2019-05-18 16:13 被阅读0次

均属于笔记,仅供个人参考,有问题欢迎指正

public class BitmapUtil {

//@# 图片加载工具类

/**

  * @description 计算图片的压缩比率

  * 设置options.inJustDecodeBounds = true; // 设置成了true,不占用内存,只获取bitmap宽高

  * 这时options.outWidth和options.outHeight就是图片真实的宽和高。

  * 之后在和需要显示的宽和高做对比得到缩放比options.inSampleSize即可

  * @param options 参数

  * @param reqWidth 目标的宽度

  * @param reqHeight 目标的高度

  * @return

  */

  private static int calculateInSampleSize(BitmapFactory.Options options, int reqWidth, int reqHeight) {

    // 源图片的高度和宽度

    final int height = options.outHeight;

    final int width = options.outWidth;

    int inSampleSize = 1;

    if (height > reqHeight || width > reqWidth) {

      // 计算出实际宽高和目标宽高的比率

      final int halfHeight = height / 2;

      final int halfWidth = width / 2;

      while ((halfHeight / inSampleSize) > reqHeight && (halfWidth / inSampleSize) > reqWidth) {

        inSampleSize *= 2;

      }

    }

    return inSampleSize;

  }

  /**

  * @description 通过传入的bitmap,进行压缩,得到符合标准的bitmap

  *

  * @param src

  * @param dstWidth

  * @param dstHeight

  * @return

  */

  private static Bitmap createScaleBitmap(Bitmap src, int dstWidth, int dstHeight, int inSampleSize) {

    //如果inSampleSize是2的倍数,也就说这个src已经是我们想要的缩略图了,直接返回即可。

    if (inSampleSize % 2 == 0) {

      return src;

    }

    // 如果是放大图片,filter决定是否平滑,如果是缩小图片,filter无影响,我们这里是缩小图片,所以直接设置为false

    Bitmap dst = Bitmap.createScaledBitmap(src, dstWidth, dstHeight, false);

    if (src != dst) { // 如果没有缩放,那么不回收

      src.recycle(); // 释放Bitmap的native像素数组

    }

    return dst;

  }

  /**

  * @description 从Resources中加载图片

  *

  * @param res

  * @param resId

  * @param reqWidth

  * @param reqHeight

  * @return

  */

  public static Bitmap decodeSampledBitmapFromResource(Resources res, int resId, int reqWidth, int reqHeight) {

    final BitmapFactory.Options options = new BitmapFactory.Options();

    options.inJustDecodeBounds = true; // 设置成了true,不占用内存,只获取bitmap宽高

    BitmapFactory.decodeResource(res, resId, options); // 读取图片长宽

    options.inSampleSize = calculateInSampleSize(options, reqWidth, reqHeight); // 调用上面定义的方法计算inSampleSize值

    // 使用获取到的inSampleSize值再次解析图片

    options.inJustDecodeBounds = false;

    Bitmap src = BitmapFactory.decodeResource(res, resId, options); // 载入一个稍大的缩略图

    return createScaleBitmap(src, reqWidth, reqHeight, options.inSampleSize); // 进一步得到目标大小的缩略图

  }

  /**

  * @description 从SD卡上加载图片

  *

  * @param pathName

  * @param reqWidth

  * @param reqHeight

  * @return

  */

  public static Bitmap decodeSampledBitmapFromFile(String pathName, int reqWidth, int reqHeight) {

    final BitmapFactory.Options options = new BitmapFactory.Options();

    options.inJustDecodeBounds = true;

    BitmapFactory.decodeFile(pathName, options);

    options.inSampleSize = calculateInSampleSize(options, reqWidth, reqHeight);

    options.inJustDecodeBounds = false;

    Bitmap src = BitmapFactory.decodeFile(pathName, options);

    return createScaleBitmap(src, reqWidth, reqHeight, options.inSampleSize);

  }

}

。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。

工具类的引用(使用)

DisplayMetrics dm = new DisplayMetrics();

getWindowManager().getDefaultDisplay().getMetrics(dm);

int imagewidth = dm.widthPixels;

int imageheight = (int) (dm.heightPixels * 0.75);

bmp = BitmapUtil.decodeSampledBitmapFromFile(myJpgPath,imagewidth,imageheight);

相关文章

  • 图片简单处理

    均属于笔记,仅供个人参考,有问题欢迎指正 public class BitmapUtil { //@# 图片加载工...

  • 简单处理图片

    图片格式 置灰:(人眼感知)float gray = 0.3 * color.r+0.59 *color.g+0...

  • 图片的简单处理

    需求:很多时候我们需要对拍照后的图片进行处理展示或者上传,但是原图的数据是很大,或者我们要展示的区域很小,这时我们...

  • Bootstrap相关

    1.Bootstrap 样式之 响应式图片的处理 响应式图片处理 在bootstrap中如何使用响应式图片? 简单...

  • oss 图片处理

    图片处理介绍: 图片处理文章链接 使用: 原始图片上传到OSS后,可以通过简单的RESTful接口,在任何时间、任...

  • PIL-图片简单处理

    最近工作中有一些简单的图片处理的需求,记录一下学习过程。 一些概念 先了解一些概念 光栅图像 光栅图像(raste...

  • 图片简单处理(尺寸变换)

    图片拉伸和尺寸变换 图片拉伸 图片的处理大概分 截图(capture), 缩放(scale), 设定大小(res...

  • 用python简单处理图片

    一:打开显示保存 二.图像通道几何变换裁剪 三. 添加水印 四.图像中的像素访问 五.图像直方图 (第一部分说明)...

  • 图片批量处理格式大小加水印重命名全能工具

    图片批处理王是一款完全免费且功能强大的图片批处理软件,帮助用户全面简单实用的处理大量图片,提高工作效率。拥有图片旋...

  • 网络(七):SDWebImage源码浅析

    目录一、我们先自己写一个加载网络图片的demo 1、最简单的实现 2、图片缓存处理:增加内存缓存 3、图片缓存处理...

网友评论

      本文标题:图片简单处理

      本文链接:https://www.haomeiwen.com/subject/fkptzqtx.html