【发布时间】:2016-04-04 00:46:29
【问题描述】:
我正在尝试构建一个应用程序,该应用程序使用相机拍摄照片并将其发送回主要活动以在 ImageVew 中显示它。我看到一个教程,在拍照时将图像保存在 SD 卡中。我可以保存文件,但我无法获取存储图像的位置。
我认为将图像存储在 SD 卡中的工作量太大,因为该图像并不那么重要。
有没有办法将我刚刚用相机拍摄的图像“保存”在位图元素中?如果是这样,它是否比将其存储在 SD 卡中更有效?
这是我的 MainActivity.java:
public class MainActivity extends AppCompatActivity {
private Uri imgLocation;
ImageView mImageView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button capture = (Button) findViewById(R.id.am_btn_camera);
capture.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
imgLocation = Uri.fromFile(new File(Environment.getExternalStorageDirectory(), "fname_" +
String.valueOf(System.currentTimeMillis()) + ".jpg"));
intent.putExtra(MediaStore.EXTRA_OUTPUT, imgLocation);
startActivityForResult(intent, 1);
}
});
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == 1 && resultCode == RESULT_OK) {
Log.e("URI",imgLocation.toString());
mImageView.setImageBitmap(BitmapFactory.decodeFile(imgLocation.toString()));
}
}}
【问题讨论】:
-
您可以使用内存解决方案,例如将位图存储在单例中。但请记住,这会占用您的 Android 内存。
-
谢谢蒂姆。我采用了将其存储在位图中的方法,但它是图像的较小版本,现在可以了。问候。