根据现有Bitmap生成相同图案指定大小的新Bitmap
通过一张现有的Bitmap,画出一张同样的但是大小使我们指定的Bitmap
需求:直接createBitmap的话不允许生成的bitmap的宽高大于原始的,因此需要特定方法来将一张Bitmap的大小进行调整
crossImage为一张现有的bitmap
Bitmap target = Bitmap.createBitmap(MIDDLE_LINE_WIDTH, MIDDLE_LINE_WIDTH, crossImage.getConfig());
Canvas temp_canvas = new Canvas(target);
temp_canvas.drawBitmap(crossImage, null, new Rect(0, 0, target.getWidth(), target.getHeight()), null);
此时的target就是一张指定大小,但是内容和crossImage一样的bitmap了。
//使用Bitmap加Matrix来缩放
public static Drawable resizeImage(Bitmap bitmap, int w, int h)
{
Bitmap BitmapOrg = bitmap;
int width = BitmapOrg.getWidth();
int height = BitmapOrg.getHeight();
int newWidth = w;
int newHeight = h;
float scaleWidth = ((float) newWidth) / width;
float scaleHeight = ((float) newHeight) / height;
Matrix matrix = new Matrix();
matrix.postScale(scaleWidth, scaleHeight);
// if you want to rotate the Bitmap
// matrix.postRotate(45);
Bitmap resizedBitmap = Bitmap.createBitmap(BitmapOrg, 0, 0, width,
height, matrix, true);
return new BitmapDrawable(resizedBitmap);
}
//使用BitmapFactory.Options的inSampleSize参数来缩放
public static Drawable resizeImage2(String path,
int width,int height)
{
BitmapFactory.Options options = new BitmapFactory.Options();
options.inJustDecodeBounds = true;//不加载bitmap到内存中
BitmapFactory.decodeFile(path,options);
int outWidth = options.outWidth;
int outHeight = options.outHeight;
options.inDither = false;
options.inPreferredConfig = Bitmap.Config.ARGB_8888;
options.inSampleSize = 1;
if (outWidth != 0 && outHeight != 0 && width != 0 && height != 0)
{
int sampleSize=(outWidth/width+outHeight/height)/2;
Log.d(tag, "sampleSize = " + sampleSize);
options.inSampleSize = sampleSize;
}
options.inJustDecodeBounds = false;
return new BitmapDrawable(BitmapFactory.decodeFile(path, options));
}
最新文章
- c语言游戏推箱子
- navicat 创建的表,username字段不能接受中文名字。
- 添加Properties取值和枚举取值
- MVC(一)
- SVD++:推荐系统的基于矩阵分解的协同过滤算法的提高
- MAT(Memory Analyzer Tool)工具入门介绍(转)
- crontab执行shell脚本
- bzoj 1005: [HNOI2008]明明的烦恼 prufer编号&;&;生成树计数
- mysql 一般操作
- Core Python Notes
- nagios 实现Mysql 主从同步状态的监控
- 逆向 Framework.jar
- message from server: ";Host 'xxx' is not allowed to connect to this MySQL server的解决
- Sasha and Array
- 封装GCD以及介绍如何使用
- Python循环列表删除元素问题
- (三)SpringBoot基础篇- 持久层,jdbcTemplate和JpaRespository
- Qt之excel 操作使用说明
- eMMC应用教程:关于RPMB的应用【转】
- Oracle简单语句查询