本人博客地址:http://my.oschina.net/lijindou/blog
转载请标明原址:https://my.oschina.net/lijindou/blog/783649
每个方法我都写的 有 注释。
直接上代码:
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; } }