一,bitmap工具

封装了以下方法:

1,获取activity屏幕截图,保存为图片文件

2,从文件中获取截图,返回bitmap对象

package com.ctbri.weather.utils;

import java.io.File;
import java.io.FileOutputStream; import android.app.Activity;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.BitmapFactory.Options;
import android.graphics.Rect;
import android.os.Environment;
import android.view.View; public class BitmapUtil {
/**
* 从文件中加载图片的缩略图
*
* @param path
* 文件路径
* @return
*/
public static Bitmap loadThumbnail(String path) { BitmapFactory.Options opts = new Options();
opts.inJustDecodeBounds = true;
BitmapFactory.decodeFile(path, opts);
int width = opts.outWidth;
int height = opts.outHeight;
int windowwidth = ;
int windowheigth = ; int scalex = width / windowwidth;
int scaley = height / windowheigth; if (scalex > scaley && scaley > ) { // 姘村钩鏂瑰悜鐨勭缉鏀炬瘮渚嬫瘮杈冨ぇ
opts.inSampleSize = scalex;
}
if (scaley > scalex && scalex > ) { // 绔栫洿鏂瑰悜鐨勭缉鏀炬瘮渚嬫瘮杈冨ぇ
opts.inSampleSize = scaley;
}
opts.inJustDecodeBounds = false;
Bitmap bitmap = BitmapFactory.decodeFile(path, opts); return bitmap; }
/**
* 获取acitivy屏幕截图工具
* @param activity需要截图的ctivity
* @param v 该acitivy上的一个view控件
* @return 返回截图的存储路径
*/
public static String getscreen(Activity activity,View v) {
String fname = "/mnt/sdcard/"; File file = new File(
Environment
.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES),
"eweather");
if (!file.exists()) {
file.mkdirs();
}
fname = new File(file.getPath() + File.separator
+ "shareimg" + ".jpg").getAbsolutePath();
View view = v.getRootView();
view.setDrawingCacheEnabled(true);
view.buildDrawingCache();
Bitmap bitmap = view.getDrawingCache(); if (bitmap != null) {
try {
FileOutputStream out = new FileOutputStream(fname);
//鑾峰彇鐘舵�鏍忛珮搴�
Rect frame = new Rect();
activity.getWindow().getDecorView().getWindowVisibleDisplayFrame(frame);
int statusBarHeight = frame.top;
//鑾峰彇灞忓箷闀垮拰楂�
int width = activity.getWindowManager().getDefaultDisplay().getWidth();
int height = activity.getWindowManager().getDefaultDisplay().getHeight();
//鍘绘帀鏍囬鏍�
bitmap = Bitmap.createBitmap(bitmap, , statusBarHeight, width, height - statusBarHeight);
view.destroyDrawingCache(); bitmap.compress(Bitmap.CompressFormat.PNG, , out);
bitmap.recycle();
bitmap=null; } catch (Exception e) {
e.printStackTrace();
} } else {
System.out.println("bitmapis NULL!");
}
return fname; } }

二、实现bitmap,drawable,byte【】之间的转换

package com.ctbri.weather.utils;

import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException; import android.graphics.Bitmap;
import android.graphics.Canvas;
import android.graphics.PixelFormat;
import android.graphics.drawable.Drawable; public class ByteUtil { public static byte[] read(String path) {
ByteArrayOutputStream outputStream = null;
try {
File imageFile = new File(path);
FileInputStream inputStream = new FileInputStream(imageFile);
outputStream = new ByteArrayOutputStream();
byte[] buffer = new byte[1024];
int len = 0;
while ((len = inputStream.read(buffer)) != -1) {
outputStream.write(buffer, 0, len);
}
inputStream.close();
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return outputStream.toByteArray();
} public static byte[] Bitmap2Bytes(Bitmap bm) {
ByteArrayOutputStream baos = new ByteArrayOutputStream();
bm.compress(Bitmap.CompressFormat.PNG, 100, baos);
return baos.toByteArray();
} public synchronized static byte[] drawableToByte(Drawable drawable) { if (drawable != null) {
Bitmap bitmap = Bitmap
.createBitmap(
drawable.getIntrinsicWidth(),
drawable.getIntrinsicHeight(),
drawable.getOpacity() != PixelFormat.JPEG ? Bitmap.Config.ARGB_8888
: Bitmap.Config.RGB_565);
Canvas canvas = new Canvas(bitmap);
bitmap.recycle();
bitmap = null;
drawable.setBounds(0, 0, drawable.getIntrinsicWidth(),
drawable.getIntrinsicHeight());
drawable.draw(canvas);
int size = bitmap.getWidth() * bitmap.getHeight() * 4;
ByteArrayOutputStream baos = new ByteArrayOutputStream(size);
bitmap.compress(Bitmap.CompressFormat.PNG, 50, baos);
byte[] imagedata = baos.toByteArray();
return imagedata;
}
return null;
}
}

关于这一点,自己的另外一篇博客有更详细的讨论,包括view,bitmap,drawable,byte[]之间的相互转换

http://www.cnblogs.com/bobodeboke/archive/2013/05/09/3069415.html

bitmap相关工具类的更多相关文章

  1. Bitmap工具类

    一直在使用的一个Bitmap工具类 处理Bitmap和ImageView对象,实现了下面功能: 1.saveBitmap: 把Bitmap对象持久存储到SD卡或手机内存. 2.getViewBitma ...

  2. Java 文件名操作的相关工具类

    项目中的操作文件名的工具类: import java.io.File; import java.util.regex.Matcher; import java.util.regex.Pattern; ...

  3. redis集成相关工具类

    package cn.yiyuan.util; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; i ...

  4. java List的相关工具类

    1. <dependency> <groupId>com.google.guava</groupId> <artifactId>guava</ar ...

  5. Bitmap工具类BitmapHelper

    BitmapHelper 提供一些获取本地缩略图,获取网络图片.dp与px的相互转换等方法. import java.io.ByteArrayInputStream; import java.io.B ...

  6. 淘淘相关工具类【json,httpClient,id,FTP,exception,cookie(包括共享cookie的设置等)】

    json package com.taotao.common.utils; import java.util.List; import com.fasterxml.jackson.core.JsonP ...

  7. Apache Commons 相关工具类使用

    Apache Commons Apache Commons包含了很多开源的工具,用于解决平时编程经常会遇到的问题,减少重复劳动.下面是我这几年做开发过程中自己用过的工具类做简单介绍. 组件 功能介绍 ...

  8. 【Springboot】FastJson与Jackson全局序列化方式的配置和相关工具类

    springboot 版本: <parent> <groupId>org.springframework.boot</groupId> <artifactId ...

  9. Java IP白名单相关工具类

    关于设置IP白名单相关的一些方法,整理,记录了一下. package com.tools.iptool; import java.util.ArrayList; import java.util.Ha ...

随机推荐

  1. win7启动tomcat失败处理

    本地启动tomcat 后访问 127.0.0.1:8080 失败,查看错误如下 使用如下命令杀死占用8080的进程 netstat -ano | findstr 8080 # 查看8080端口状态 t ...

  2. 工作中常用到的JS验证

    Common.js // JavaScript Document // _ooOoo_ // o8888888o // 88" . "88 // (| -_- |) // O\ = ...

  3. ds replicas是什么

    以上是我百度的答案.很显然,这个对于初学者很不友好,中文的每一个靠谱的,英文的都TM是how 和 why .But 我要 what! 所以只能自己搞,自己琢磨,搞完分享出来,助力后来者不掉坑,有所查. ...

  4. 一分钟理解sku和spu

    SPU SPU = Standard Product Unit (标准化产品单位) SPU是商品信息聚合的最小单位,是一组可复用.易检索的标准化信息的集合,该集合描述了一个产品的特性.通俗点讲,属性值 ...

  5. 095、如何创建Swarm集群?(Swarm02)

    参考https://www.cnblogs.com/CloudMan6/p/7862254.html   本节我们将创建三节点的swarm集群(操作系统Ubuntu 16.04 ,Docker 版本均 ...

  6. java静态代码块、静态方法、静态变量、构造代码块、普通代码块

    一.静态代码块 1.在java类中(方法中不能存在静态代码块)使用static关键字和{}声明的代码块: public class CodeBlock{ static{ System.out.prin ...

  7. 剑指offer-1:旋转数组的最小数字

    旋转数组的最小数字1.题目描述 把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转. 输入一个非减排序的数组的一个旋转,输出旋转数组的最小元素. 例如数组{3,4,5,1,2}为{1,2 ...

  8. 国际化:node导语言包

    项目做国际化,是离不开语言包的en.json.zh-CN.json等等.难道要一个一个json文件的写吗???不!!!只要我们写在excel里,然后用nodejs导出我们需要的语言包就可以了!这样大大 ...

  9. Git忽略文件的三个办法

    方法一(并不好用) 在git中如果想忽略掉某个文件,不让这个文件提交到版本库中,可以使用修改根目录中 .gitignore 文件的方法(如无,则需自己手工建立此文件).这个文件每一行保存了一个匹配的规 ...

  10. inittab - 与 sysv 兼容的 init 进程使用的初始化文件格式

    描述 inittab 文件描述在系统引导及通常的操作期间, 都启动哪些进程 (比如 /etc/init.d/boot, /etc/init.d/rc, getty 等等). Init(8) 讨论有关 ...