zoukankan      html  css  js  c++  java
  • 第二阶段冲刺七

    今天主要完成的任务:构建我的界面

    遇到的困难:图片圆形化的问题

    解决办法:采用工具类进行裁剪即可

    源程序代码:

    BitmapUtils.java

    package com.itheima.network.func_reference;
    
    import android.content.Context;
    import android.graphics.Bitmap;
    import android.graphics.Canvas;
    import android.graphics.Matrix;
    import android.graphics.Paint;
    import android.graphics.PorterDuff;
    import android.graphics.PorterDuffXfermode;
    
    import java.io.File;
    import java.io.FileOutputStream;
    import java.io.IOException;
    
    public class BitmapUtils
    {
        /**
         * 代码:功能性代码;非功能性代码。
         *
         * @param source
         * @return
         */
        public static Bitmap circleBitmap(Bitmap source) {
            //获取Bitmap的宽度
            int width = source.getWidth();
            //以Bitmap的宽度值作为新的bitmap的宽高值。
            Bitmap bitmap = Bitmap.createBitmap(width, width, Bitmap.Config.ARGB_8888);
            //以此bitmap为基准,创建一个画布
            Canvas canvas = new Canvas(bitmap);
            Paint paint = new Paint();
            paint.setAntiAlias(true);
            //在画布上画一个圆
            canvas.drawCircle(width / 2, width / 2, width / 2, paint);
    
            //设置图片相交情况下的处理方式
            //setXfermode:设置当绘制的图像出现相交情况时候的处理方式的,它包含的常用模式有:
            //PorterDuff.Mode.SRC_IN 取两层图像交集部分,只显示上层图像
            //PorterDuff.Mode.DST_IN 取两层图像交集部分,只显示下层图像
            paint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.SRC_IN));
            //在画布上绘制bitmap
            canvas.drawBitmap(source, 0, 0, paint);
            return bitmap;
    
        }
    
        //实现图片的压缩处理
        //设置宽高必须使用浮点型,否则导致压缩的比例:0
        public static Bitmap zoom(Bitmap source, float width , float height){
    
            Matrix matrix = new Matrix();
            //图片的压缩处理
            matrix.postScale(width / source.getWidth(),height / source.getHeight());
    
            Bitmap bitmap = Bitmap.createBitmap(source, 0, 0, source.getWidth(), source.getHeight(), matrix, false);
            return bitmap;
        }
    
    
        public static void saveBitmap( Bitmap bm, Context mContext)
        {
            String TargetPath = mContext.getFilesDir() + "/image/";
            File file=new File(TargetPath);
            if (!file.exists())
            {
                file.mkdir();
            }
            File saveFile = new File(TargetPath,"icon.png");
            try {
                FileOutputStream saveImgOut = new FileOutputStream(saveFile);
                bm.compress(Bitmap.CompressFormat.JPEG, 100, saveImgOut);
                saveImgOut.flush();
                saveImgOut.close();
            } catch (IOException ex) {
                ex.printStackTrace();
            }
        }
    
    }
    View Code

    运行截图:

  • 相关阅读:
    CodeForces 55D Beautiful numbers(数位dp+数学)
    hdu 2089 不要62(数位dp入门)
    Git版本控制
    Git初始化-添加提交以及查看状态
    linux-高并发与负载均衡-lvs-3种模型推导
    Scrapy中选择器的用法
    Scrapy命令行详解
    Scrapy框架基本用法讲解
    MaxCompute教程
    Scrapy安装报错
  • 原文地址:https://www.cnblogs.com/weixiao1717/p/13085354.html
Copyright © 2011-2022 走看看