`
喧嚣求静
  • 浏览: 581485 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

android图片工具类

 
阅读更多
package com.mm.mmcalendar.utils;

import java.io.ByteArrayOutputStream;

import android.graphics.Bitmap;
import android.graphics.Bitmap.Config;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.graphics.PixelFormat;
import android.graphics.PorterDuff;
import android.graphics.PorterDuff.Mode;
import android.graphics.PorterDuffXfermode;
import android.graphics.Rect;
import android.graphics.RectF;
import android.graphics.drawable.Drawable;
import android.os.Environment;

/** 
 *  
 * 
 */
public class Tools {
	/**
	 * 检查是否存在SDCard
	 * 
	 * @return
	 */
	public static boolean hasSdcard() {
		String state = Environment.getExternalStorageState();
		if (state.equals(Environment.MEDIA_MOUNTED)) {
			return true;
		} else {
			return false;
		}
	}

	/**
	 * 把图片变成圆角
	 * 
	 * @param bitmap
	 *            需要修改的图片
	 * @param pixels
	 *            圆角的弧度
	 * @return 圆角图片
	 */
	public static Bitmap toRoundCorner(Bitmap bitmap, int pixels) {

		Bitmap output = Bitmap.createBitmap(bitmap.getWidth(),
				bitmap.getHeight(), Config.ARGB_8888);
		Canvas canvas = new Canvas(output);

		final int color = 0xff424242;
		final Paint paint = new Paint();
		final Rect rect = new Rect(0, 0, bitmap.getWidth(), bitmap.getHeight());
		final RectF rectF = new RectF(rect);
		final float roundPx = pixels;

		paint.setAntiAlias(true);
		canvas.drawARGB(0, 0, 0, 0);
		paint.setColor(color);
		canvas.drawRoundRect(rectF, roundPx, roundPx, paint);

		paint.setXfermode(new PorterDuffXfermode(Mode.SRC_IN));
		canvas.drawBitmap(bitmap, rect, rect, paint);

		return output;
	}

	public static Bitmap Bytes2Bimap(byte[] b) {
		if (b.length != 0) {
			return BitmapFactory.decodeByteArray(b, 0, b.length);
		} else {
			return null;
		}
	}

	public static byte[] Bitmap2Bytes(Bitmap bm) {
		ByteArrayOutputStream baos = new ByteArrayOutputStream();
		bm.compress(Bitmap.CompressFormat.PNG, 100, baos);
		return baos.toByteArray();
	}

	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;
	}
	
	public static byte[] getImageContentInSize(String pathName, int boundsWidth, int boundsHeight) {
		Bitmap bitmap = BitmapFactory.decodeFile(pathName);

		int srcWidth = bitmap.getWidth();
		int srcHeight = bitmap.getHeight();
		if (srcWidth > boundsWidth || srcHeight > boundsHeight) {

			double boundsRatio = 1.0 * boundsWidth / boundsHeight;
			double srcRatio = 1.0 * srcWidth / srcHeight;
			double scaleRatio;
			if (boundsRatio > srcRatio) {
				scaleRatio = 1.0 * boundsHeight / srcHeight;
			}
			else {
				scaleRatio = 1.0 * boundsWidth / srcWidth;
			}
			int scaleWidth = (int) (srcWidth * scaleRatio);
			int scaleHeight = (int) (srcHeight * scaleRatio);

			bitmap = Bitmap.createScaledBitmap(bitmap, scaleWidth, scaleHeight, false);
		}
		ByteArrayOutputStream bos = new ByteArrayOutputStream();
		bitmap.compress(Bitmap.CompressFormat.JPEG, 100, bos);
		return bos.toByteArray();
	}
	
	public static Bitmap getRoundedCornerBitmap(Bitmap bitmap, int pixels) {
		Bitmap output = Bitmap.createBitmap(bitmap.getWidth(), bitmap
			.getHeight(), Bitmap.Config.ARGB_8888);
		Canvas canvas = new Canvas(output);

		final int color = 0xff424242;
		final Paint paint = new Paint();
		final Rect rect = new Rect(0, 0, bitmap.getWidth(), bitmap.getHeight());
		final RectF rectF = new RectF(rect);
		final float roundPx = pixels;

		paint.setAntiAlias(true);
		canvas.drawARGB(0, 0, 0, 0);
		paint.setColor(color);
		canvas.drawRoundRect(rectF, roundPx, roundPx, paint);

		paint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.SRC_IN));
		canvas.drawBitmap(bitmap, rect, rect, paint);

		return output;
	}
}

分享到:
评论

相关推荐

    android 图片工具类

    在Android开发中,图片处理是不可或缺的一部分,无论是加载网络图片、裁剪图片、调整尺寸、压缩质量,还是进行各种特效处理,都需要用到相应的图片工具类。本篇将围绕"android 图片工具类"这一主题,详细介绍Android...

    Android图片处理工具类

    总结来说,Android的base64图片处理工具类是开发者在处理图片数据时的重要助手,它简化了图片在网络和本地存储中的转换过程。理解并熟练运用这些工具类,能够帮助你更高效地进行Android应用的开发。

    非常实用的Android图片工具类

    本文实例为大家分享了Android图片工具类的具体代码,供大家参考,具体内容如下 import java.io.ByteArrayOutputStream; import java.io.File; import java.io.FileNotFoundException; import java.io....

    Android图片的工具类,裁剪

    这个一个关于图片的工具类

    兼容Android7.0的图片选择工具类

    本教程将详细讲解如何创建一个兼容Android7.0的图片选择工具类,帮助开发者解决这些问题。 首先,理解Android7.0的系统变化至关重要。在Android7.0(API级别24)中,主要的更新包括多窗口模式、快速回复、通知通道...

    android工具类 26个实用工具类

    在Android开发中,工具类(Util Classes)是程序员们经常使用的辅助代码集合,它们封装了常见的功能,使得代码更加简洁、可读性更强。这里提到的"android工具类 26个实用工具类"是一个集合,包含了多个针对Android...

    Android常用工具类集合

    在Android开发中,工具类(Utility Class)是程序员经常使用的辅助模块,它们包含了各种实用功能,可以帮助开发者提高代码的复用性和效率。本资源“Android常用工具类集合”是一个专门为Android平台设计的库,其中...

    android各种工具类

    本文将深入探讨“android各种工具类”这一主题,包括文件操作、日期处理、图片处理、系统服务利用、网络通信以及数据库管理等核心知识点。 1. 文件操作: 在Android中,文件操作是非常基础且重要的功能。开发者需要...

    Android常用工具类

    在Android开发中,工具类(Util Classes)是程序员经常使用的代码模块,它们提供了一系列静态方法,用于处理各种常见的任务,从而提高代码的可重用性和效率。以下是对"Android常用工具类"中涉及的一些关键知识点的...

    Android http图片上传工具类

    该类传入 Bitmap 服务器访问地址 图片名字 服务器的key

    Java-Android工具类

    此外,这份资料可能还包含其他类型的工具类,如Bitmap处理工具类,用于图片的加载、缩放和优化;Date工具类,用于日期和时间的格式化和转换;Dialog工具类,提供自定义对话框的快速创建;还有可能包括Utils类,其中...

    Android开发常用工具类

    在Android开发过程中,工具类(Utility Class)是开发者不可或缺的好帮手。它们通常包含一系列静态方法,用于执行特定任务,如日期时间处理、网络请求、数据解析等,从而提高代码的复用性和效率。以下是一些Android...

    Android通用工具类

    整理一些常用的安卓工具类,包含有AES加密,MD5加密,OKHTTP3,VOLLEY,XUTILS网络请求工具,Glide图片加载,沉浸式状态栏,自定义下来刷新/上拉加载更多,webview,缓存工具类,以及网络判断/用户信息判断/日期等工具类....

    android缓存工具类源码

    android 缓存 工具类 源码,为用户节省流量,把信息存放到数据库,三种缓存策略:(1)LRU算法,固定缓存图片数量(max_num),当图片数量超出max_num时,将缓存中最近用的最少的图片删除。 (2)FTU算法,固定每张...

    Android bitmap工具类

    BitmapUtils工具类是为了方便开发者在处理图片时进行各种操作,比如转换、压缩、存储等。本篇文章将详细探讨`Android bitmap工具类`,特别是如何将Bitmap转换为String格式,以及这种转换在联网操作中的应用。 首先...

    Android 异步加载图片工具类

    可以实现向Gridview和其他常用图片控件中加载图片,不影响其他信息的加载;加载后在本地储存,下次加载图片会从本地获取;

    图片下载工具类

    图片下载工具类是Android开发中常见的一种组件,主要用于从网络上获取并缓存图片资源,以便在应用中高效地展示。这个工具类的设计通常考虑到异步处理,避免因下载操作阻塞主线程,影响用户体验。以下是一些关于图片...

    android开发必备工具类

    在Android开发过程中,工具类是不可或缺的一部分,它们可以极大地提高开发效率,简化代码,使得开发者能够更加专注于核心功能的实现。以下是一些Android开发中常用的工具类及其详细知识点: 1. **日志工具类**: -...

    Android-简单的Android工具类包含ActivityFragmentApplication基类和各类常用工具类集合

    - Android开发中常见的工具类包括:字符串工具类(处理字符串格式化、拼接等)、日期时间工具类(格式化日期和时间)、网络工具类(检查网络状态、发起网络请求)、图片处理工具类(裁剪、压缩、加载图片)等。...

Global site tag (gtag.js) - Google Analytics