【发布时间】:2018-05-17 10:31:15
【问题描述】:
我已经开发了一个应用程序来拍照以保存在画廊中。我在网上搜索过,我可以练习的最简单的方法是使用 data.getExtras().get("data") 。所以下面是从相机拍照的代码。请注意,我在这个类中使用了片段。
img22a1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
startActivityForResult(intent,CAMERA_01);
}
});
获取捕获的图像并将其转换为字符串
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == CAMERA_01) {
if (resultCode == Activity.RESULT_OK) {
Bitmap bitmap = (Bitmap) data.getExtras().get("data");
ByteArrayOutputStream output = new ByteArrayOutputStream();
bitmap.compress(Bitmap.CompressFormat.JPEG, 100, output);
byte[] byte_arr = output.toByteArray();
((SiteProgress) getActivity().getApplication()).seti22a1(Base64.encodeToString(byte_arr, Base64.DEFAULT));
BitmapDrawable ob = new BitmapDrawable(getResources(), bitmap);
img22a1.setBackgroundDrawable(ob);
} else if (resultCode == Activity.RESULT_CANCELED) {
}
}
}
我将字符串保存到全局变量中,以便其他活动可以访问它。 在另一个活动中,我有一个按钮可以通过访问图像字符串将图像保存到文件夹/图库中。
for(int i=0;i<=namefile.length;i++){
Bitmap[] bitmap = new Bitmap[namefile.length];
FileOutputStream outputStream = new FileOutputStream(String.valueOf(namefile[i]));
bitmap[i] = BitmapFactory.decodeByteArray(decodedString[i],0,decodedString[i].length);
bitmap[i].compress(Bitmap.CompressFormat.JPEG, 100, outputStream);
outputStream.close();
MediaStore.Images.Media.insertImage(getActivity().getContentResolver(), namefile[i].getAbsolutePath(), namefile[i].getName(), namefile[i].getName());
}
它可以将图像保存到文件夹/图库中......但图像质量非常低......我几乎看不到图像中的文字。
他们说data.getExtras().get("data") 应该返回缩略图而不是实际图像。我想要的是获得完整的图像,而不是缩略图。
任何答案将不胜感激。
【问题讨论】:
-
你正在压缩你的位图
-
@rak007 我需要获取图像的字节数组...这就是我使用 ByteArrayOutputStream 的原因
标签: android