1

カメラ(現在のクリック画像)またはSDカード(すでにクリックされているか、SDカード画像内)から写真を撮るときに、画像名を取得する方法について少し混乱しています。画像名を取得する方法を教えてください。

if (requestCode == CAMERA_REQUEST) {
ImageView profImage;
Bitmap photo = (Bitmap) data.getExtras().get("data");
Bitmap scaledphoto = Bitmap.createScaledBitmap(photo, height, width,
                        true);
profImage.setImageBitmap(scaledphoto);
//How to get name here
}

ここで、データベースに画像を保存することを提案するImageNameを取得する方法を説明します。

または

Imageview test=(Imageview) findViewById(R.id.testimage);
test.setImageResource(R.drawable.androidimage);

だから、私は画像の名前を取得したい、ここで画像名は androidimage.SO 画像名を取得する方法。

4

3 に答える 3

0

次のコードを使用してください。

public class UploadImageActivity extends Activity {
private final int CAMERA_PICTURE = 1;
private final int GALLERY_PICTURE = 2;
private ImageView userPictureImageView;
private Intent pictureActionIntent = null;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main1);

    userPictureImageView = (ImageView) findViewById(R.id.imageView1);
    userPictureImageView.setOnClickListener(new OnClickListener() {
        public void onClick(View v) {
            startDialog();
        }

    });
}

protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    if (requestCode == GALLERY_PICTURE) {
        Uri uri = data.getData();
        if (uri != null) {
            // User had pick an image.
            Cursor cursor = getContentResolver().query(uri, new String[] { android.provider.MediaStore.Images.ImageColumns.DATA }, null, null, null);
            cursor.moveToFirst();
            // Link to the image
            final String imageFilePath = cursor.getString(0);
            File photos = new File(imageFilePath);
            Bitmap b = decodeFile(photos);
            b = Bitmap.createScaledBitmap(b, 150, 150, true);
            userPictureImageView.setImageBitmap(b);
            cursor.close();
        }
        else {
            Toast toast = Toast.makeText(this, "No Image is selected.", Toast.LENGTH_LONG);
            toast.show();
        }
    }
    else if (requestCode == CAMERA_PICTURE) {
        if (data.getExtras() != null) {
            // here is the image from camera
            Bitmap bitmap = (Bitmap) data.getExtras().get("data");
            userPictureImageView.setImageBitmap(bitmap);
        }
    }
}

private Bitmap decodeFile(File f) {
    try {
        // decode image size
        BitmapFactory.Options o = new BitmapFactory.Options();
        o.inJustDecodeBounds = true;
        BitmapFactory.decodeStream(new FileInputStream(f), null, o);

        // Find the correct scale value. It should be the power of 2.
        final int REQUIRED_SIZE = 70;
        int width_tmp = o.outWidth, height_tmp = o.outHeight;
        int scale = 1;
        while (true) {
            if (width_tmp / 2 < REQUIRED_SIZE || height_tmp / 2 < REQUIRED_SIZE)
                break;
            width_tmp /= 2;
            height_tmp /= 2;
            scale++;
        }

        // decode with inSampleSize
        BitmapFactory.Options o2 = new BitmapFactory.Options();
        o2.inSampleSize = scale;
        return BitmapFactory.decodeStream(new FileInputStream(f), null, o2);
    }
    catch (FileNotFoundException e) {
    }
    return null;
}

private void startDialog() {
    AlertDialog.Builder myAlertDialog = new AlertDialog.Builder(this);
    myAlertDialog.setTitle("Upload Pictures Option");
    myAlertDialog.setMessage("How do you want to set your picture?");

    myAlertDialog.setPositiveButton("Gallery", new DialogInterface.OnClickListener() {
        public void onClick(DialogInterface arg0, int arg1) {
            pictureActionIntent = new Intent(Intent.ACTION_GET_CONTENT, null);
            pictureActionIntent.setType("image/*");
            pictureActionIntent.putExtra("return-data", true);
            startActivityForResult(pictureActionIntent, GALLERY_PICTURE);
        }
    });

    myAlertDialog.setNegativeButton("Camera", new DialogInterface.OnClickListener() {
        public void onClick(DialogInterface arg0, int arg1) {
            pictureActionIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
            startActivityForResult(pictureActionIntent, CAMERA_PICTURE);
        }
    });
    myAlertDialog.show();
}
}

マニフェスト ファイルにカメラのアクセス許可を追加することを忘れないでください。

于 2013-04-25T05:56:49.673 に答える
0

Bitmap をこのメソッドに渡して、イメージ URI を取得できます。

public Uri getImageUri(Context inContext, Bitmap inImage) {
        ByteArrayOutputStream bytes = new ByteArrayOutputStream();
        inImage.compress(Bitmap.CompressFormat.JPEG, 100, bytes);
        String path = Images.Media.insertImage(inContext.getContentResolver(),
                inImage, "Title", null);
        return Uri.parse(path);
    }

最後に、画像を画像ビューに設定できます

imageView.setImageUri(mUri);
于 2013-04-25T05:22:06.997 に答える
0

更新されたコード

ギャラリー :

    Intent photoPickerIntent = new Intent(
            Intent.ACTION_GET_CONTENT);
    photoPickerIntent.setType("image/*");
    startActivityForResult(photoPickerIntent, CAMERA_PIC_REQUEST);

onActivityResult

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    // TODO Auto-generated method stub
    super.onActivityResult(requestCode, resultCode, data);
    if (requestCode == CAMERA_PIC_REQUEST) {


        Uri selectedImage = data.getData();

        String filePath = getRealPathFromURI(selectedImage);
        // used in show HD images
        BitmapFactory.Options bounds = new BitmapFactory.Options();
        // divide bitmap to 4 sample size it can be 2rest(2,4,8 etc)
        bounds.inSampleSize = 4;
        // get bitmap from bounds and file path
        Bitmap bmp = BitmapFactory.decodeFile(filePath, bounds);

        imageView.setImageBitmap(bmp);
        Uri selectedImageUri1 = data.getData();
        String path = getRealPathFromURI(selectedImageUri1);
        File file = new File(path);
        textView.setText(file.getName());

    }
}

public String getRealPathFromURI(Uri contentUri) {
    String[] proj = { MediaStore.Images.Media.DATA };
    Cursor cursor = managedQuery(contentUri, proj, null, null, null);
    int column_index = cursor
            .getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
    cursor.moveToFirst();
    return cursor.getString(column_index);
}
于 2013-04-25T05:24:37.747 に答える