概述
版权声明:本文为HaiyuKing原创文章,转载请注明出处!
前言
用于缩放bitmap以及将bitmap保存成图片到SD卡中
效果图
代码分析
bitmapZoomByHeight(Bitmap srcBitmap, floatnewHeight): 根据指定的高度进行缩放(src是bitmap)
bitmapZoomByHeight(Drawable drawable, floatnewHeight) :根据指定的高度进行缩放(src是drawable)
bitmapZoomByScale(Bitmap srcBitmap, floatscaleWidth, floatscaleHeight): 根据指定的宽度比例值和高度比例值进行缩放
drawableToBitmap(Drawable drawable) :将drawable对象转成bitmap对象
drawableToBitmap2(Drawable drawable) :将drawable对象转成bitmap对象
saveBitmapToSDCard(Bitmap bitmap, String path): 将bitmap对象保存成图片到sd卡中
getBitmapFromSDCard(String path) :从sd卡中去除图片的bitmap对象
使用步骤
一、项目组织结构图
注意事项:
1、 导入类文件后需要change包名以及重新import R文件路径
2、 Values目录下的文件(strings.xml、dimens.xml、colors.xml等),如果项目中存在,则复制里面的内容,不要整个覆盖
二、导入步骤
将BitmapUtil复制到项目中
packagecom.why.project.bitmaputildemo.utils;importandroid.graphics.Bitmap;importandroid.graphics.BitmapFactory;importandroid.graphics.Canvas;importandroid.graphics.Matrix;importandroid.graphics.PixelFormat;importandroid.graphics.drawable.BitmapDrawable;importandroid.graphics.drawable.Drawable;importjava.io.File;importjava.io.FileInputStream;importjava.io.FileOutputStream;importjava.io.InputStream;importjava.io.OutputStream;/*** Created by HaiyuKing
* Used*/
public classBitmapUtil {public staticBitmap temp;/**根据指定的高度进行缩放(source是bitmap)*/
public static Bitmap bitmapZoomByHeight(Bitmap srcBitmap, floatnewHeight) {float scale = newHeight / (((float)srcBitmap.getHeight()));returnBitmapUtil.bitmapZoomByScale(srcBitmap, scale, scale);
}/**根据指定的高度进行缩放(source是drawable)*/
public static Bitmap bitmapZoomByHeight(Drawable drawable, floatnewHeight) {
Bitmap bitmap=BitmapUtil.drawableToBitmap(drawable);float scale = newHeight / (((float)bitmap.getHeight()));returnBitmapUtil.bitmapZoomByScale(bitmap, scale, scale);
}/**根据指定的宽度比例值和高度比例值进行缩放*/
public static Bitmap bitmapZoomByScale(Bitmap srcBitmap, float scaleWidth, floatscaleHeight) {int width =srcBitmap.getWidth();int height =srcBitmap.getHeight();
Matrix matrix= newMatrix();
matrix.postScale(scaleWidth, scaleHeight);
Bitmap bitmap= Bitmap.createBitmap(srcBitmap, 0, 0, width, height, matrix, true);if(bitmap != null) {returnbitmap;
}else{returnsrcBitmap;
}
}/**将drawable对象转成bitmap对象*/
public staticBitmap drawableToBitmap(Drawable drawable) {int width =drawable.getIntrinsicWidth();int height =drawable.getIntrinsicHeight();
Bitmap.Config config= drawable.getOpacity() != PixelFormat.OPAQUE ?Bitmap.Config.ARGB_8888 : Bitmap.Config.RGB_565;
Bitmap bitmap=Bitmap.createBitmap(width, height, config);
Canvas canvas= newCanvas(bitmap);
drawable.setBounds(0, 0, width, height);
drawable.draw(canvas);returnbitmap;
}/**将drawable对象转成bitmap对象*/
public staticBitmap drawableToBitmap2(Drawable drawable) {
BitmapDrawable bd=(BitmapDrawable) drawable;
Bitmap bm=bd.getBitmap();returnbm;
}/**将bitmap对象保存成图片到sd卡中*/
public static voidsaveBitmapToSDCard(Bitmap bitmap, String path) {
File file= newFile(path);if(file.exists()) {
file.delete();
}try{
FileOutputStream fileOutputStream= newFileOutputStream(file);
bitmap.compress(Bitmap.CompressFormat.PNG,100, ((OutputStream)fileOutputStream));//设置PNG的话,透明区域不会变成黑色
fileOutputStream.close();
System.out.println("----------save success-------------------");
}catch(Exception v0) {
v0.printStackTrace();
}
}/**从sd卡中获取图片的bitmap对象*/
public staticBitmap getBitmapFromSDCard(String path) {
Bitmap bitmap= null;try{
FileInputStream fileInputStream= newFileInputStream(path);if(fileInputStream != null) {
BitmapFactory.Options options= newBitmapFactory.Options();
options.inSampleSize= 2; //当图片资源太大的适合,会出现内存溢出。图片宽高都为原来的二分之一,即图片为原来的四分一
bitmap = BitmapFactory.decodeStream(((InputStream) fileInputStream), null, options);
}
}catch(Exception e) {return null;
}returnbitmap;
}
}
在AndroidMainfest.xml文件中声明权限
添加运行时权限的处理(本demo中采用的是修改targetSDKVersion=22)
三、使用方法
packagecom.why.project.bitmaputildemo;importandroid.graphics.Bitmap;importandroid.os.Bundle;importandroid.support.v7.app.AppCompatActivity;importandroid.view.View;importandroid.widget.Button;importandroid.widget.ImageView;importcom.why.project.bitmaputildemo.utils.AppDir;importcom.why.project.bitmaputildemo.utils.BitmapUtil;importjava.io.File;public class MainActivity extendsAppCompatActivity {privateImageView img_source;privateImageView img_scale1;privateImageView img_scale2;privateButton btn_save;privateButton btn_show;privateImageView img_show;privateString pngFilePath;
@Overrideprotected voidonCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initViews();
initDatas();
initEvents();
}private voidinitViews() {
img_source=(ImageView) findViewById(R.id.img_source);
img_scale1=(ImageView) findViewById(R.id.img_scale1);
img_scale2=(ImageView) findViewById(R.id.img_scale2);
btn_save=(Button) findViewById(R.id.btn_save);
btn_show=(Button) findViewById(R.id.btn_show);
img_show=(ImageView) findViewById(R.id.img_show);
}private voidinitDatas() {
img_source.setImageResource(R.mipmap.ic_launcher);
Bitmap sourceBitmap=BitmapUtil.drawableToBitmap(getResources().getDrawable(R.mipmap.ic_launcher));
Bitmap sacleBitmap1= BitmapUtil.bitmapZoomByHeight(sourceBitmap,200);
img_scale1.setImageBitmap(sacleBitmap1);
Bitmap sacleBitmap2= BitmapUtil.bitmapZoomByScale(sourceBitmap,2,1);
img_scale2.setImageBitmap(sacleBitmap2);
}private voidinitEvents() {
btn_save.setOnClickListener(newView.OnClickListener() {
@Overridepublic voidonClick(View v) {
pngFilePath= AppDir.getInstance(MainActivity.this).IMAGE + File.separator + System.currentTimeMillis() + ".png";
Bitmap sourceBitmap=BitmapUtil.drawableToBitmap(getResources().getDrawable(R.mipmap.ic_launcher));
BitmapUtil.saveBitmapToSDCard(sourceBitmap,pngFilePath);
}
});
btn_show.setOnClickListener(newView.OnClickListener() {
@Overridepublic voidonClick(View v) {
String pngPath=pngFilePath;
Bitmap pngBitmap=BitmapUtil.getBitmapFromSDCard(pngPath);
img_show.setImageBitmap(pngBitmap);
}
});
}
}
混淆配置
无
参考资料
项目demo下载地址
最后
以上就是尊敬心锁为你收集整理的java 保存bitmap图片_BitmapUtil【缩放bitmap以及将bitmap保存成图片到SD卡中】的全部内容,希望文章能够帮你解决java 保存bitmap图片_BitmapUtil【缩放bitmap以及将bitmap保存成图片到SD卡中】所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复