我是靠谱客的博主 尊敬心锁,最近开发中收集的这篇文章主要介绍java 保存bitmap图片_BitmapUtil【缩放bitmap以及将bitmap保存成图片到SD卡中】,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

版权声明:本文为HaiyuKing原创文章,转载请注明出处!

前言

用于缩放bitmap以及将bitmap保存成图片到SD卡中

效果图

5aa32c3beae85ea41d8a13076ea109cd.png

代码分析

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对象

使用步骤

一、项目组织结构图

40bcacd43366a994d594beb030632871.png

注意事项:

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卡中】所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(53)

评论列表共有 0 条评论

立即
投稿
返回
顶部