在Android开发中,Bitmap是处理图像的基本类,用于在内存中表示图像数据。本文将深入讲解Bitmap的使用方法,包括如何显示、保存、缩放和旋转图像,为开发者提供实用的技巧。
我们来看Bitmap的创建。BitmapFactory类是Android提供用来解码图像资源的工具,它可以将各种格式(如PNG、JPG、GIF和BMP)的图像转化为Bitmap对象。例如,从资源文件中加载图像:
```java
Bitmap bmp = BitmapFactory.decodeResource(getResources(), R.drawable.testImg);
```
或者,如果图像存储在SD卡上,我们可以这样加载:
```java
Bitmap bmp = BitmapFactory.decodeFile("/sdcard/testBitmap/testImg.png");
```
保存Bitmap到SD卡也相当简单,只需将Bitmap对象压缩后写入到输出流中:
```java
File fImage = new File("/sdcard/testBitmap/testImg.png");
fImage.createNewFile();
FileOutputStream iStream = new FileOutputStream(fImage);
bmp.compress(CompressFormat.PNG, 100, iStream);
iStream.close();
fImage.close();
iStream = null;
fImage = null;
```
对于网络上的图片,可以先下载再解码成Bitmap:
```java
String imgURLStr = "http://tx.bdimg.com/sys/portrait/item/990e6271796a7a6c170c.jpg";
URL imgURL = new URL(imgURLStr);
URLConnection conn = imgURL.openConnection();
conn.connect();
InputStream is = conn.getInputStream();
BufferedInputStream bis = new BufferedInputStream(is);
Bitmap bmp = BitmapFactory.decodeStream(bis);
bis.close();
is.close();
imgURL = null;
```
接下来是显示Bitmap。最常见的是将其转换为BitmapDrawable对象,并设置给ImageView:
```java
BitmapDrawable bmpDraw = new BitmapDrawable(bmp);
ImageView imageView = findViewById(R.id.ImageView02);
imageView.setImageDrawable(bmpDraw);
```
或者,使用Canvas类直接绘制到视图上:
```java
Canvas canvas = ...; // 获取到Canvas对象
canvas.drawBitmap(bmp, 0, 0, null);
```
缩放Bitmap有多种方式。一种是通过重新绘制Bitmap,指定源和目标矩形:
```java
canvas.drawBitmap(bitmap, srcRect, dstRect, paint);
```
另一种是创建一个新的缩放后的Bitmap对象:
```java
Bitmap scaledBitmap = Bitmap.createScaledBitmap(bitmap, newWidth, newHeight, true);
```
还可以使用Canvas的`scale()`方法或Matrix来实现缩放。例如,使用Matrix:
```java
Matrix matrix = new Matrix();
matrix.postScale(scaleX, scaleY);
Bitmap scaledBitmap = Bitmap.createBitmap(bitmap, 0, 0, bitmap.getWidth(), bitmap.getHeight(), matrix, true);
```
旋转Bitmap可以通过Matrix的`postRotate()`方法实现:
```java
matrix.postRotate(degrees, bitmap.getWidth() / 2, bitmap.getHeight() / 2);
Bitmap rotatedBitmap = Bitmap.createBitmap(bitmap, 0, 0, bitmap.getWidth(), bitmap.getHeight(), matrix, true);
```
Android的Bitmap类提供了丰富的功能来处理图像,包括加载、保存、显示、缩放和旋转等。理解这些基本操作对于开发涉及图像处理的Android应用至关重要。通过灵活运用Bitmap,开发者可以创建出丰富多样的用户体验。