Sono stato in grado di scattare una foto utilizzando una fotocamera o prendere da una galleria e mostrarlo in un ImageView utilizzando questo codice. Quello che devo fare ora è usare quella foto e caricarla su Parse. Ho cercato qua e là a fare questo, e non ho trovato il modo giusto per farlo. Qualcuno può aiutarmi per favore con questo? È possibile caricare l'immagine da ImageView? Grazie.Come caricare l'immagine in Parse in Android?
protected Button mFromCamera;
protected Button mFromGallery;
protected ImageView mImageView;
private static final int CAMERA_REQUEST = 1888;
private static final int SELECT_PHOTO = 100;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//Initialize ImageView
mImageView = (ImageView) findViewById(R.id.ImgPrev);
//Initialize Camera
mFromCamera = (Button) findViewById(R.id.FromCamera);
//use camera
mFromCamera.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent cameraIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
startActivityForResult(cameraIntent, CAMERA_REQUEST);
} //use camera end
});
//initialize button
mFromGallery = (Button) findViewById(R.id.FromGallery);
//pick a photo
mFromGallery.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View arg0) {
Intent photoPickerIntent = new Intent(Intent.ACTION_PICK, android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
photoPickerIntent.setType("image/*");
startActivityForResult(photoPickerIntent, SELECT_PHOTO);
}
});//pick a photo end
}
//previewing Image
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
switch (requestCode) {
//from the gallery
case SELECT_PHOTO:
if (requestCode == SELECT_PHOTO && resultCode == RESULT_OK && null!= data) {
Uri selectedImage = data.getData();
String[] filePathColumn = { MediaStore.Images.Media.DATA };
Cursor cursor = getContentResolver().query(selectedImage,
filePathColumn, null, null, null);
cursor.moveToFirst();
int columnIndex = cursor.getColumnIndex(filePathColumn[0]);
String picturePath = cursor.getString(columnIndex);
cursor.close();
mImageView.setImageBitmap(BitmapFactory.decodeFile(picturePath));
}
break;
//from the camera
case CAMERA_REQUEST:
if (requestCode == CAMERA_REQUEST && resultCode == RESULT_OK) {
Bitmap photo = (Bitmap) data.getExtras().get("data");
mImageView.setImageBitmap(photo);
}
break;
}
}//Preview Image End
Grazie mille. questo funziona Non mi rendevo conto che quelli sono la fonte delle mie immagini dal momento che il formato sembra molto diverso. Sono stato in grado di inserire il codice di caricamento sotto il case all'interno di onActivityForResult in basso. È possibile farlo al di fuori di onActivityForResult? Penso di aver bisogno di farlo su onCreate in modo da poter analizzare altre informazioni (nome utente e materiale) in un clic in modo che vadano allo stesso oggetto/classe. e questo codice significa, se ho scelto un'immagine da una galleria, poi ho cambiato idea per scattare una foto, invece, caricherò 2 immagini. Come faccio a farlo, quindi carico solo 1 immagine? –
ciao, sì è possibile utilizzare il codice di caricamento nella propria funzione, quindi è possibile fare riferimento da dove vuoi. Ad esempio: private myUploading() {// Converti in byte ByteArrayOutputStream stream = new ByteArrayOutputStream(); // Comprime l'immagine in scala di qualità inferiore 1 - 100 yourbitmap.compress (Bitmap.CompressFormat.PNG, 100, stream); byte [] image = stream.toByteArray(); ...} E nel tuo onActivityResult prima di ogni interruzione; fai una chiamata al caricamento con: myUploading(); Ecco. – mourad
Anche la mia risposta era quella? Volevo tanto il marchio verde. – mourad