我从画廊中挑选照片或者用相机拍照。 如果我将图片放入我的imageView,然后单击确认按钮,我该如何保存该图片? 我必须使用saveState()吗? 请发表一些评论。 感谢。
protected void onActivityResult(int requestCode, int resultCode, Intent data)
{
super.onActivityResult(requestCode, resultCode, data);
if (resultCode != RESULT_OK) return;
switch (requestCode)
{
case PICK_FROM_CAMERA:
Bitmap selectedImage = (Bitmap) data.getExtras().get("data");
selectedImage = Bitmap.createScaledBitmap(selectedImage, 80, 80, false);
mImageView.setImageBitmap(selectedImage);
break;
case PICK_FROM_GALLERY:
Uri selectedImageUri = data.getData();
selectedImagePath = getPath(selectedImageUri);
System.out.println("Image Path : " + selectedImagePath);
mImageView.setImageURI(selectedImageUri);
break;
}
}
private void saveState()
{
String name = (String) nameEdit.getText().toString();
String category = (String) categoryEdit.getText().toString();
String expired_date = (String) expired_Date_Btn.getText().toString();
ImageView image = (ImageView) mImageView.setImageURI(); //how to edit?
if(mRowId == null)
{
long id = mDbHelper.insertItem(category, name, expired_date);
if(id>0)
{
mRowId = id;
}
}
else
{
mDbHelper.updateItem(mRowId, category, name, expired_date);
}
}
//How can I save image after clicking button?
confirmButton.setOnClickListener(new View.OnClickListener()
{
public void onClick(View v){
setResult(RESULT_OK);
finish();
}
});
答案 0 :(得分:3)
您可以按照以下步骤保存所有View(不仅仅是ImageView)的图像:
1.获取视图的位图:
public Bitmap loadBitmapFromView(View v) {
Bitmap b = Bitmap.createBitmap(v.getWidth(), v.getHeight(),
Bitmap.Config.ARGB_8888);
Canvas c = new Canvas(b);
v.draw(c);
v.invalidate();
return b;
}
2.将其保存在您的SD卡文件中(或任何您想要的地方):
protected String saveBitmap(Bitmap bm, String name) throws Exception {
String tempFilePath = Environment.getExternalStorageDirectory() + "/"
+ getPackageName() + "/" + name + ".jpg";
File tempFile = new File(tempFilePath);
if (!tempFile.exists()) {
if (!tempFile.getParentFile().exists()) {
tempFile.getParentFile().mkdirs();
}
}
tempFile.delete();
tempFile.createNewFile();
int quality = 100;
FileOutputStream fileOutputStream = new FileOutputStream(tempFile);
BufferedOutputStream bos = new BufferedOutputStream(fileOutputStream);
bm.compress(CompressFormat.JPEG, quality, bos);
bos.flush();
bos.close();
bm.recycle();
return tempFilePath;
}
这些代码来自我的一个项目,但我认为它们易于理解和重复使用。希望它会对你有所帮助。
答案 1 :(得分:2)
我不确定如何从图库中执行此操作或为什么要这样做,因为如果图像位于图库中,则图像已保存到手机中。您应该能够使用文件的URI重新编写文件。 如果您使用相机拍摄图像,则可以看到图像的位图。使用以下代码片段保存它应该相对容易:
outStream = new FileOutputStream(file);
bm.compress(Bitmap.CompressFormat.PNG, 100, outStream);
outStream.flush();
outStream.close();
您需要权限
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
有关详细信息,请尝试按照此示例(我找到代码段的位置)。他们正在上传他们的图片,但应该适用相同的概念。 http://android-er.blogspot.com/2010/07/save-file-to-sd-card.html
希望这有帮助!