Bitmap 称为点阵图像或绘制图像,是由称作像素(图片元素)的单个点组成的,这些点通过不同的排列和染色以构成图样。

Bitmap 是 Android 系统中图像处理最重要的类之一,用它可以获取图像文件信息,对图像进行剪切、旋转、缩放等操作,并可以将图像保存成特定格式的文件。

Bitmap 位于 android.graphics 包中,不提供对外的构造方法,只能通过 BitmapFactory 类进行实例化。利用 BitmapFactory 的 decodeFile 方法可以从特定文件中获取 Bitmap 对象,也可以使用 decodeResource() 从特定的图片资源中获取 Bitmap 对象。

实例 BitmapDemo 从资源文件中创建 Bitmap 对象,并对其进行一些操作,运行效果如图 1 所示。

图 1  Bitmap对象的效果

其对应布局文件 Main.xml 的内容如下:

android:layout_width="fill_parent"

android:layout_height="fill_parent"

android:orientation="vertical">

android:id="@+id/seekBarId"

android:layout_width="fill_parent"

android:layout_height="wrap_content" />

android:id="@+id/imageview"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:src="@drawable/img1" />

BitmapActivity.Java 的代码如下:

package introduction.android.bitmapdemo;

import android.annotation.SuppressLint;

import android.app.Activity;

import android.graphics.Bitmap;

import android.graphics.BitmapFactory;

import android.graphics.Matrix;

import android.os.Bundle;

import android.widget.ImageView;

import android.widget.SeekBar;

public class BitmapActivity extends Activity {

ImageView myImageView;

Bitmap myBmp, newBmp;

int bmpWidth, bmpHeight;

SeekBar seekbarRotate;

float rotAngle;

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_bitmap);

myImageView = (ImageView) findViewById(R.id.imageview);

//由Resource载入图片

myBmp = BitmapFactory.decodeResource(getResources(), R.drawable.img1);

bmpWidth = myBmp.getWidth();

bmpHeight = myBmp.getHeight();

//实例化matrix

Matrix matrix = new Matrix();

//设定Matrix属性 x、y缩放比例为1.5

matrix.postScale(1.5F, 1.5F);

//顺时针旋转45度

matrix.postRotate(45.0F);

newBmp = Bitmap.createBitmap(myBmp, 0, 0, bmpWidth, bmpHeight, matrix, true);

seekbarRotate = (SeekBar) findViewById(R.id.seekBarId);

seekbarRotate.setOnSeekBarChangeListener(onRotate);

}

private SeekBar.OnSeekBarChangeListener onRotate = new SeekBar.OnSeekBarChangeListener() {

public void onStopTrackingTouch(SeekBar seekBar) {

// TODO Auto-generated method stub

}

public void onStartTrackingTouch(SeekBar seekBar) {

// TODO Auto-generated method stub

}

public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {

// TODO Auto-generated method stub

Matrix m = new Matrix();

m.postRotate((float) progress * 3.6F);

newBmp = Bitmap.createBitmap(myBmp, 0, 0, bmpWidth, bmpHeight, m, true);

myImageView.setImageBitmap(newBmp);

}

};

}

本实例实现了拖动进度条图片旋转的效果。

使用 BitmapFactory 从资源中载入图片,并获取图片的宽和高,之后使用 Matrix 类对图片进行缩放和旋转操作。

java bitmap 点阵_Android Bitmap(点阵图像、绘制图像)相关推荐

  1. 什么是点阵图 Bitmap ?

    什么是点阵图 Bitmap ? 关于点阵图 Bitmap 点阵图 Bitmap 的关键特征 点阵图 Bitmap 的优势 点阵图 Bitmap 的劣势 关于点阵图 Bitmap 点阵图是以像素组成的, ...

  2. java位图_位图Bitmap及其Java实现

    举个例子,如下图,如果我们想要存放 0,2,4,5,10,11,12,14,15这几个数字,如果采用普通存储方式,若4位表示一个数字,这9个数字需要4*9=36位,至少36位才能存储这些数据. 如果采 ...

  3. 【Java AWT 图形界面编程】使用鼠标滚轮缩放 Canvas 画布中绘制的背景图像 ( 绘制超大图像 + 鼠标拖动 + 鼠标滚轮缩放 + 以当前鼠标指针位置为缩放中心 示例 )

    文章目录 一.鼠标滚轮缩放的中心点设置为当前鼠标中心点 - 要点分析 1.保存当前鼠标指针指向的位置 2.根据鼠标指针指向的位置以及比例重新计算图片位置 二.绘制超大图像 + 鼠标拖动 + 鼠标滚轮缩 ...

  4. android bitmap 饱和度 demo,Android GPUImage实现多种图像滤镜效果

    前言 GPUImage 是iOS下一个开源的基于GPU的图像处理库,提供各种各样的图像处理滤镜,并且支持照相机和摄像机的实时滤镜.GPUImage for Android是它在Android下的实现, ...

  5. java base64转bitmap,如何将Bitmap位图与base64字符串相互转换

    先引用delphi自带的单元 uses EncdDecd; 然后就可以使用下面二个函数了: ///将Bitmap位图转化为base64字符串 function BitmapToString(img:T ...

  6. 【Android 内存优化】自定义组件长图组件 ( 获取图像宽高 | 计算解码区域 | 设置图像解码属性 复用 像素格式 | 图像绘制 )

    文章目录 一.获取图像真实宽高 二.计算解码区域 三.设置解码参数 内存复用 像素格式 四.图像绘制 五.执行效果 六.源码及资源下载 官方文档 API : BitmapRegionDecoder 在 ...

  7. java实现马赛克,java如何用Processing生成马赛克风格的图像

    java如何用Processing生成马赛克风格的图像 首先使用PImage来实例化对象,再通过loadImage赋值,两层for循环遍历图片上的像素点,每隔5个像素点,画一个直径为3的圆.颜色通过p ...

  8. java实现缩放图像、切割图像、图像类型转换、彩色转黑白、文字水印、图片水印等

    可实现以下常用功能:缩放图像.切割图像.图像类型转换.彩色转黑白.文字水印.图片水印等 代码如下 复制代码 import java.awt.AlphaComposite; import java.aw ...

  9. Android 图像绘制之 Drawable

    转载自:https://www.jianshu.com/p/4cd87e3c43d6,作者:不惜留恋_ (简书) 不要冲动去自定义 View 绘制简单的图形,以及显示静态的图片,可以用 Drawabl ...

最新文章

  1. 能上qq打不开网页,金山毒霸帮你解决
  2. 字节跳动学习笔记:java实例变量和静态变量
  3. 一种获取过程调用堆栈信息的简单方法
  4. can bus 中spn是什么_CP AUTOSAR功能栈简介NM网络管理(Can)
  5. Linux服务器开发之:stat(),fstat(),lstat()详细介绍+案例演示
  6. linux上线tomcat安装目录,LINUX 下 tomcat的安装和配置
  7. [Translation]《击鼓》
  8. 块元素、行内块和内联元素_如何删除内联块元素之间的空间?
  9. element table批量删除_element ui 批量删除
  10. 零基础不建议学前端_临夏零基础怎么学理发
  11. GISAXS和GIWAXS的分析
  12. Linux USB网卡驱动安装
  13. nullb driver分析6-blk-mq相关定时器
  14. 罗杨美慧 20190919-3 效能分析
  15. poj 2152 树形dp(建立消防站)
  16. 软件设计师2017下半年
  17. windows无法连接到打印机_打印机无法连接怎么办
  18. 重阳节绘画软件测试,2016九九重阳节绘画
  19. Android apk 逆向工程研究﹣破解 MyTV HD 機種限制手記
  20. mydockfinder怎么用?mydockfinder使用教程

热门文章

  1. UA OPTI544 量子光学12 半古典激光原理基础
  2. linux 端口查询命令
  3. 不好我不发出来,2008最新驱动大全(万能驱动光盘),
  4. 天花板级前端工程师才能玩转的工具?前端AI应用集合重磅开源
  5. 今日早报 每日精选12条新闻简报 每天一分钟 知晓天下事 8月14日
  6. 现在合适的正装才能使自己气场十足,气质自然更上一个层次
  7. Ogre 天龙八部地形 Heightmap(高度图)+GridInfo(地表信息)初步结果
  8. python抽样_python数据预处理 :数据抽样解析
  9. uni-app(踩坑第一篇):轮播图swiper改变指示点样式(已解决)
  10. 清朝第一巨贪--和绅