在工程的 /drawable文件夹下黏贴一张图片(上面的图片)
1.1 使用 imageView.setImageResource( id ) 来读取资源文件中的图片
imageView.setImageResource(R.drawable.khy);
Context类中提供了一个openFileOutput()方法,可以用于将数据存储到指定的文件中。这个方法接受两个参数,第一个参数是文件名。在文件创建的时候使用的就是这个名称,注意这里指定的文件名不可以包含路径。因为所有的文件都是默认存储到/data/data/
openFileOutput()方法返回的是个FileOutputStream对象,得到了这个对象之后就可以使用Java流的方式将数据写入到文件中了。
2.1 使用bitmap的compress(文件格式,图片质量,输出流)方法来进行位图的保存
bitmap.compress(Bitmap.CompressFormat.PNG, 100, openFileOutput("picture", Context.MODE_PRIVATE));
2.2 使用BitmapFactory.decodeResource()方法来获取资源文件中的一个位图对象
Bitmap bitmap = BitmapFactory.decodeResource(this.getResources(), R.drawable.khy);
类似于将数据存储到文件中,Context 类中还提供了一个openFileInput()方法,用于从文件中读取数据。这个方法要比openFile0utput()简单一些,它只接收-一个参数,即要读取的文件名,然后系统会自动到/data/data/
3.1 使用BitmapFactory.decodeStream(openFileInput("picture"))从默认文件夹中获得图片文件
BitmapFactory.decodeStream(openFileInput("picture"));
activity_main.xml
MainActivity.java (主界面)
package com.example.graphics_process;
import androidx.appcompat.app.AppCompatActivity;
import android.content.Context;
import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.Toast;
import java.io.FileNotFoundException;
public class MainActivity extends AppCompatActivity implements View.OnClickListener {
Button bt_load_resorces_pic;
Button bt_load_storage_pic;
Button bt_save_pic;
ImageView imageView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
bt_load_resorces_pic = findViewById(R.id.bt_load_resorces_pic);
bt_load_storage_pic = findViewById(R.id.bt_load_storage_pic);
bt_save_pic = findViewById(R.id.bt_save_pic);
//主界面中的图片,用于测试保存图片
imageView = findViewById(R.id.main_image);
imageView.setImageResource(R.drawable.khy);
bt_load_resorces_pic.setOnClickListener(this);
bt_load_storage_pic.setOnClickListener(this);
bt_save_pic.setOnClickListener(this);
}
/***
* 保存图片
* @param bitmap 将此图片保存到默认路径下
*/
public void saveImage(Bitmap bitmap) {
try {
bitmap.compress(Bitmap.CompressFormat.PNG, 100, openFileOutput("picture", Context.MODE_PRIVATE));
Toast.makeText(this, "图片文件保存到默认文件夹下", Toast.LENGTH_SHORT).show();
} catch (FileNotFoundException e) {
e.printStackTrace();
}
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.bt_load_resorces_pic:
Intent intent = new Intent(this, Main2Activity.class);
startActivity(intent);
break;
case R.id.bt_load_storage_pic:
Intent intent1 = new Intent(this, Main3Activity.class);
startActivity(intent1);
break;
case R.id.bt_save_pic:
Bitmap bitmap = BitmapFactory.decodeResource(this.getResources(), R.drawable.khy);
saveImage(bitmap);
break;
default:
break;
}
}
}
activity_main2.xml(加载资源文件中的图片并显示)
Main2Activity.java
package com.example.graphics_process;
import androidx.appcompat.app.AppCompatActivity;
import android.graphics.Bitmap;
import android.os.Bundle;
import android.widget.ImageView;
public class Main2Activity extends AppCompatActivity {
private ImageView imageView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main2);
imageView = findViewById(R.id.imageView);
//加载资源文件中的图片并显示
imageView.setImageResource(R.drawable.khy);
}
}
activity_main3.xml
Main3Activity.java(从默认文件夹中读取图片文件并显示)
package com.example.graphics_process;
import androidx.appcompat.app.AppCompatActivity;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.Bundle;
import android.widget.ImageView;
import java.io.FileNotFoundException;
public class Main3Activity extends AppCompatActivity {
ImageView image2;
Bitmap bitmap;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main3);
image2 = findViewById(R.id.image2);
//获取并显示从默认文件加中获得的位图
image2.setImageBitmap(getImage());
}
private Bitmap getImage() {
try {
bitmap = BitmapFactory.decodeStream(openFileInput("picture"));
} catch (FileNotFoundException e) {
e.printStackTrace();
}
return bitmap;
}
}
这里一共测试了三个功能:
(1)加载资源文件中的图片资源并显示
(2)从默认APP文件夹下的存储路径读取并显示图片
(3)保存图片
注意:本次测试若没有测试第三步保存图片功能,第二步可能会报FileNotFound错误。
4.1 主界面展示
4.2 保存图片文件到默认路径下