【问题标题】:Android:Problem in saving cropped image taken from cameraAndroid:保存从相机拍摄的裁剪图像时出现问题
【发布时间】:2011-08-02 04:53:34
【问题描述】:

我在保存从相机拍摄的裁剪图像到 SD 卡中的指定路径时遇到问题。

代码-->

public class PhotocropActivity extends Activity 
{
    /** Called when the activity is first created. */
    private static final int SELECT_PICTURE = 1;
    private static final int PICK_FROM_CAMERA = 2;
    private Uri muri;

    @Override
    public void onCreate(Bundle savedInstanceState) 
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        final CharSequence[] items = {"Capture New Image", "Upload from gallery"};
        AlertDialog.Builder builder  = new AlertDialog.Builder(PhotocropActivity.this);
        builder.setTitle("Select Image");
        builder.setItems(items, new DialogInterface.OnClickListener()
        {
            public void onClick(DialogInterface dialog, int item)
            {
                Intent intent = new Intent();
                intent.putExtra("crop", "true");
                intent.putExtra("aspectX", 730);
                intent.putExtra("aspectY", 1115);
                intent.putExtra("outputX", 730);
                intent.putExtra("outputY", 1115);
                intent.putExtra(MediaStore.EXTRA_OUTPUT, getTempFile());
                intent.putExtra("outputFormat", Bitmap.CompressFormat.JPEG.toString());
                if(item==0)
               {
                    intent.setAction(MediaStore.ACTION_IMAGE_CAPTURE);
                    startActivityForResult(intent, PICK_FROM_CAMERA);
               }
               else if(item==1)
               {
                    intent.setAction(Intent.ACTION_PICK);
                    intent.setType("image/*");
                    startActivityForResult(intent, SELECT_PICTURE);
                }
            }
            private Uri getTempFile()
            {
                 muri = Uri.fromFile(new File(Environment.getExternalStorageDirectory(),"Image_" + String.Valueof(System.currentTimeMillis()) + ".jpg"));
                 return muri;
             } 
        });
        final AlertDialog alert = builder.create();
        ((Button) findViewById(R.id.button)).setOnClickListener(new OnClickListener() 
        {
            @Override
            public void onClick(View view)
            {
                alert.show();   
            }
        });
    }

    @Override
    public void onActivityResult(int requestCode, int resultCode, Intent data) 
    {
        super.onActivityResult(requestCode, resultCode, data);

        switch(requestCode)
        {
            case PICK_FROM_CAMERA : if (resultCode == RESULT_OK)
            { 
                String filePath= muri.getPath();
                Toast.makeText(this, filePath, Toast.LENGTH_SHORT).show();
                Bitmap selectedImage = BitmapFactory.decodeFile(filePath);
                ImageView image = (ImageView)findViewById(R.id.selectedimage);
                image.setImageBitmap(selectedImage);
            }
            break;
            case SELECT_PICTURE : if (resultCode == RESULT_OK) 
            {
                  String filePath= muri.getPath();
                  Toast.makeText(this, filePath, Toast.LENGTH_SHORT).show();
                  Bitmap selectedImage =  BitmapFactory.decodeFile(filePath);
                  ImageView image = (ImageView)findViewById(R.id.selectedimage);
                  image.setImageBitmap(selectedImage);
            }
            break;
            default:
                break;
        }
    }
}

在这里,当我调试它时,它在 String filePath=muri.getPath(); 处显示 NULLPOINTEREXCEPTION;在 PICK_FROM_CAMERA。但它在 getTempFile() 中显示了上面的 muri 值。 任何人都可以帮助我。修复代码中的错误?我遇到了很大的麻烦。

【问题讨论】:

    标签: android android-2.2-froyo


    【解决方案1】:

    嘿,我已经解决了这个问题。它的完美。这里是代码-->

    case PICK_FROM_CAMERA : if (resultCode == RESULT_OK)
                { 
                    ContentValues values = new ContentValues();
                    values.put(Images.Media.TITLE, "title");
                    values.put(Images.Media.BUCKET_ID, "test");
                    values.put(Images.Media.DESCRIPTION, "test Image taken");
                    values.put(Images.Media.MIME_TYPE, "image/jpeg");
                    Uri uri = getContentResolver().insert(Media.EXTERNAL_CONTENT_URI, values);
                    Bitmap photo = (Bitmap) data.getExtras().get("data");
                    ((ImageView)findViewById(R.id.selectedimage)).setImageBitmap(photo);
                    OutputStream outstream;
                    try {
                            outstream = getContentResolver().openOutputStream(uri);
                            photo.compress(Bitmap.CompressFormat.JPEG,100, outstream);
                            outstream.close();
                    } catch (FileNotFoundException e) {}
                    catch (IOException e){}
    

    【讨论】:

      猜你喜欢
      • 2013-07-30
      • 2010-12-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-11-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多