通过一张现有的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));
}

最新文章

  1. c语言游戏推箱子
  2. navicat 创建的表,username字段不能接受中文名字。
  3. 添加Properties取值和枚举取值
  4. MVC(一)
  5. SVD++:推荐系统的基于矩阵分解的协同过滤算法的提高
  6. MAT(Memory Analyzer Tool)工具入门介绍(转)
  7. crontab执行shell脚本
  8. bzoj 1005: [HNOI2008]明明的烦恼 prufer编号&&生成树计数
  9. mysql 一般操作
  10. Core Python Notes
  11. nagios 实现Mysql 主从同步状态的监控
  12. 逆向 Framework.jar
  13. message from server: "Host 'xxx' is not allowed to connect to this MySQL server的解决
  14. Sasha and Array
  15. 封装GCD以及介绍如何使用
  16. Python循环列表删除元素问题
  17. (三)SpringBoot基础篇- 持久层,jdbcTemplate和JpaRespository
  18. Qt之excel 操作使用说明
  19. eMMC应用教程:关于RPMB的应用【转】
  20. Oracle简单语句查询

热门文章

  1. ql的python学习之路-day3
  2. 判断iptables是否运行的一些探索
  3. PostgreSQL 安装PYTHON扩展,访问页面或者第三方程序
  4. 网页导出成word文档的默认视图方式问题
  5. C语言基础知识(四)——位操作
  6. 性能测试之服务器监控和Prometheus推荐
  7. Python 图像处理 OpenCV (5):图像的几何变换
  8. Meta标签基本使用
  9. C#用Linq对列表/集合进查询
  10. JMeter中BeanShell Sampler