博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
PhotoManage
阅读量:5789 次
发布时间:2019-06-18

本文共 7739 字,大约阅读时间需要 25 分钟。

hot3.png

本人博客地址:

转载请标明原址:

 

每个方法我都写的 有 注释。

直接上代码:

import android.graphics.Bitmap;import android.graphics.BitmapFactory;import android.graphics.Canvas;import android.graphics.Matrix;import android.graphics.Paint;import android.graphics.PixelFormat;import android.graphics.drawable.Drawable;import android.os.Environment;import android.util.Base64;import android.util.Log;import java.io.ByteArrayOutputStream;import java.io.File;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOException;import java.io.InputStream;import java.net.HttpURLConnection;import java.net.MalformedURLException;import java.net.URL;/** * 本类  用于 图片的处理 * Created by admin on 2016/8/6. */public class PhotoManage {    private static final String TAG = "PhotoManage";    /*获取手机本地存储的路径*/    public static String get() {        return String.valueOf(Environment.getExternalStorageDirectory());    }    /**     * 加载本地图片     *     * @param uri 图片的路径     * @return Bitmap 返回的是 一个 Bitmap 类型     */    public static Bitmap getLoacalBitmap(String uri) {        try {            FileInputStream fis = new FileInputStream(uri);            return BitmapFactory.decodeStream(fis);        } catch (FileNotFoundException e) {            e.printStackTrace();            return null;        }    }    /**     * @param bitmap     * @return string 返回的是 一个 String 类型     * @effect 将 Bitmap 类型 的数据 转换  成  String 类型     */    public static String bitmaptoString(Bitmap bitmap) {        //将Bitmap转换成字符串        String string = null;        ByteArrayOutputStream bStream = new ByteArrayOutputStream();        bitmap.compress(Bitmap.CompressFormat.PNG, 100, bStream);        byte[] bytes = bStream.toByteArray();        string = Base64.encodeToString(bytes, Base64.DEFAULT);        return string;    }    /**     * @param string     * @return Bitmap 返回的是 一个 Bitmap 类型     * @effect 将 string 类型 的数据 转换  成  Bitmap 类型     */    public static Bitmap stringtoBitmap(String string) {        //将字符串转换成Bitmap类型        Bitmap bitmap = null;        try {            byte[] bitmapArray;            bitmapArray = Base64.decode(string, Base64.DEFAULT);            bitmap = BitmapFactory.decodeByteArray(bitmapArray, 0, bitmapArray.length);        } catch (Exception e) {            e.printStackTrace();        }        return bitmap;    }    /**     * @param bitmap  图片 数据     * @param picName 图片名称  例:yhewm.png     * @effect 将图片保存到本地  将 bitmap 类型的 图片,保存到本地     */    public static void savePhoto(Bitmap bitmap, String picName) {        if (bitmap == null) {            Log.e(TAG, "savePhoto: 图片为空");            return;        }        Log.e(TAG, "savePhoto保存图片");        File f = new File(PhotoManage.get() + "/Android/data/com.zimoedu/files/", picName);//这里 的路径 要改变下,这个 是我项目的路径        if (f.exists()) {            f.delete();        }        try {            FileOutputStream out = new FileOutputStream(f);            bitmap.compress(Bitmap.CompressFormat.PNG, 90, out);            out.flush();            out.close();//            Log.i(TAG, "已经保存");        } catch (FileNotFoundException e) {            // TODO Auto-generated catch block            e.printStackTrace();        } catch (IOException e) {            // TODO Auto-generated catch block            e.printStackTrace();        }    }    /**     * @param src : 原图片     * @return : 返回的是已经缩放的图片     * @effect 缩放  图片     */    public static Bitmap scaleBitmap(Bitmap src) {        int width = src.getWidth();//原来尺寸大小        int height = src.getHeight();        final float destSize = 30;//缩放到这个大小,你想放大多少就多少        //图片缩放比例,新尺寸/原来的尺寸        float scaleWidth = ((float) destSize) / width;        float scaleHeight = ((float) destSize) / height;        Matrix matrix = new Matrix();        matrix.postScale(scaleWidth, scaleHeight);        //返回缩放后的图片        return Bitmap.createBitmap(src, 0, 0, width, height, matrix, true);    }    /**     * 这个和上面的一样     *     * @param src : 原图片     * @return : 返回的是已经缩放的图片     * @effect 缩放  图片     */    public static Bitmap scaleBitmapbag(Bitmap src) {        int width = src.getWidth();//原来尺寸大小        int height = src.getHeight();        final float destSize = 500;//缩放到这个大小,你想放大多少就多少        //图片缩放比例,新尺寸/原来的尺寸        float scaleWidth = ((float) destSize) / width;        float scaleHeight = ((float) destSize) / height;        Matrix matrix = new Matrix();        matrix.postScale(scaleWidth, scaleHeight);        //返回缩放后的图片        return Bitmap.createBitmap(src, 0, 0, width, height, matrix, true);    }    /**     * @effect Drawable 转 Bitmap     */    public static Bitmap drawableToBitmap(Drawable drawable) {        Bitmap bitmap = Bitmap.createBitmap(                drawable.getIntrinsicWidth(),                drawable.getIntrinsicHeight(),                drawable.getOpacity() != PixelFormat.OPAQUE ? Bitmap.Config.ARGB_8888                        : Bitmap.Config.RGB_565);        Canvas canvas = new Canvas(bitmap);        //canvas.setBitmap(bitmap);        drawable.setBounds(0, 0, drawable.getIntrinsicWidth(), drawable.getIntrinsicHeight());        drawable.draw(canvas);        return bitmap;    }    /**     * @param url 网络图片的URL     * @return 返回的 bitmap 类型     * @effect 读取网络图片 返回 bitmap类型     */    public final static Bitmap returnBitMap(String url) {        Log.e(TAG, "returnBitMap: " + url);        URL myFileUrl = null;        Bitmap bitmap = null;        try {            myFileUrl = new URL(url);            HttpURLConnection conn;            conn = (HttpURLConnection) myFileUrl.openConnection();            conn.setDoInput(true);            conn.connect();            InputStream is = conn.getInputStream();            bitmap = BitmapFactory.decodeStream(is);        } catch (MalformedURLException e) {            // TODO Auto-generated catch block            e.printStackTrace();        } catch (IOException e) {            // TODO Auto-generated catch block            e.printStackTrace();        }        return bitmap;    }    /**     * @param url 网络图片的URL     * @return 返回的 bitmap 类型     * @effect 读取网络图片 返回 bitmap类型     */    public static Bitmap netPicToBmp(String url) {        try {            Log.d("FileUtil", url);            URL Url = new URL(url);            HttpURLConnection connection = (HttpURLConnection) Url.openConnection();            connection.setDoInput(true);            connection.connect();            InputStream input = connection.getInputStream();            Bitmap myBitmap = BitmapFactory.decodeStream(input);            //设置固定大小            //需要的大小            float newWidth = 200f;            float newHeigth = 200f;            //图片大小            int width = myBitmap.getWidth();            int height = myBitmap.getHeight();            //缩放比例            float scaleWidth = newWidth / width;            float scaleHeigth = newHeigth / height;            Matrix matrix = new Matrix();            matrix.postScale(scaleWidth, scaleHeigth);            Bitmap bitmap = Bitmap.createBitmap(myBitmap, 0, 0, width, height, matrix, true);            return bitmap;        } catch (IOException e) {            // Log exception            return null;        }    }    /**     * @param color       颜色     * @param orginBitmap 图片     * @return 修改过后的图片     * @effect 给图片加底色     */    public static Bitmap drawBg4Bitmap(int color, Bitmap orginBitmap) {        Paint paint = new Paint();        paint.setColor(color);        Bitmap bitmap = Bitmap.createBitmap(orginBitmap.getWidth(),                orginBitmap.getHeight(), orginBitmap.getConfig());        Canvas canvas = new Canvas(bitmap);        canvas.drawRect(0, 0, orginBitmap.getWidth(), orginBitmap.getHeight(), paint);        canvas.drawBitmap(orginBitmap, 0, 0, paint);        return bitmap;    }}

转载于:https://my.oschina.net/lijindou/blog/783649

你可能感兴趣的文章
Windows 7环境下网站性能测试小工具 Apache Bench 和 Webbench使用和下载
查看>>
C#常见错误解决方法
查看>>
安装cnpm (npm淘宝镜像)
查看>>
Java 面向对象(基础) 知识点总结I
查看>>
读书笔记《自控力》
查看>>
基于神念TGAM的脑波小车(1)
查看>>
ceph集群搭建Jewel版本
查看>>
HttpClient 解释
查看>>
111111
查看>>
在Button上面显示图片,去掉Button的默认样式
查看>>
区域生长算法
查看>>
(转)json+flexgrid+jbox组合运用页面刷新<jsp>
查看>>
hive学习2(Navicat连接hive)
查看>>
getResourceAsStream的3种路径配置
查看>>
switch语句小练习
查看>>
组合逻辑电路
查看>>
POP-一个点击带有放大还原的动画效果
查看>>
个人阅读作业2
查看>>
UE4材质是什么样的机制
查看>>
使用QTP录制自带Flight小实例
查看>>