zoukankan      html  css  js  c++  java
  • Android图片处理

      相信做Android开发的小伙伴对于Android图片压缩、裁剪一定有很深的印象,今天我将带领大家一起学习一下这个看着高深莫测的知识,以便再以后的学习、工作中可以帮助到大家。

      首先我们看一下这个问题出现的原因,当我们需要在我们的应用中添加大量图片是,程序往往会报出OMM问题,这是什么问题呢?是当我们添加的照片过多或过大时,Android就会报出超内存错误,往往我们遇到这个问题都很无奈,进行图片缓存优化可以帮助我们解决这个问题,但是很多时候我们根本不知道,如何进行内存优化,很明显我就是这样的一位,这里我采用了压缩图片、裁剪图片的方式,减少图片占用的内存,从而使图片展示流畅。

      下面我们先看一下如何进行图片的裁剪:裁剪图片有两种方式,一种调用系统的裁剪方式,这种方式可以方便用户选择自己的裁剪区域,很多关于图片裁剪的视频,讲的就是这一种;第二种是通过后台函数直接进行裁剪,这种方式的好处在于,简化了用户的操作,方便快捷。对于第一种,大家可以百度一下,本篇我们一起来探讨一下如何通过后台函数实现对图片的自动裁剪。

    File file = new File(fileString);//文件对象;fileString:文件的地址
    InputStream is = null;
    try {
        is = new FileInputStream(file);//获得一个文件输入流对象
    } catch (FileNotFoundException e) {
        e.printStackTrace();
    }
    BitmapFactory.Options options = new  BitmapFactory.Options();
    options.inJustDecodeBounds =  false;//这个参数一定要设置为false;如果将其设为true的话,在decode时将会返回null,通过此设置可以去查询一个bitmap的属性,比如bitmap的长与宽,而不占用内存大小
    double n = file.length()/1024.0;//获得文件的大小
    if(n<200){
        options.inSampleSize = 2;//width,hight设为原来的二分一
    }else{
        options.inSampleSize = 3;//width,hight设为原来的三分一
    }
            Bitmap bitmap =  BitmapFactory.decodeStream(is, null,  options);

      BitmapFactory.decodeStream(is, null, options);根据上面我们设置压缩比,对图片进行压缩处理。

      下面我们一起来谈谈如何进行图片的裁剪,这里我介绍的是自定义裁剪,通过我们设置裁剪起点和裁剪长宽值实现对图片的裁剪。这里我将以实现一个根据图片的长宽,取最短边为边居中裁剪。

    int w = options.outWidth;//得到图片的宽
    int h = options.outHeight;//得到图片的高
    
    int wh = w > h ? h : w;// 裁切后所取的正方形区域边长
    
    int retX = w > h ? (w - h) / 2 : 0;//基于原图,取正方形左上角x坐标
    int retY = w > h ? 0 : (h - w) / 2;//基于原图,取正方形左上角y坐标
            
    Bitmap.createBitmap(bitmap, retX, retY, wh, wh, null, false);

      好了关于图片的压缩与裁剪就为大家介绍完了,希望对大家有一些帮助吧。ImageView实现适屏和裁剪图片的功能视频下载:http://pan.baidu.com/s/1mhkM1s8

  • 相关阅读:
    一个简单实现的string类
    Python基础(二)
    Python基础(一)
    区块链初探
    某电商平台开发记要——客服系统
    某电商平台开发记要
    Upload files to aliyunOSS with bootstrap-fileinput
    jquery.validate[.unobtrusive]和Bootstrap实现tooltip错误提示
    PostgreSQL笔记
    天冷了,那些树还好吗?
  • 原文地址:https://www.cnblogs.com/AndroidJotting/p/5064003.html
Copyright © 2011-2022 走看看