Join FlipAndroid.COM Telegram Group: https://t.me/joinchat/F_aqThGkhwcLzmI49vKAiw


Imagen de Uri a bytesarray

Actualmente tengo dos actividades. Uno para tirar de la imagen de la tarjeta SD y otro para la conexión Bluetooth.

He utilizado un paquete para transferir el Uri de la imagen de la actividad 1.

Ahora lo que deseo hacer es conseguir que Uri en la actividad de Bluetooth y convertirlo en un estado transmisible a través de Byte Arrays he visto algunos ejemplos, pero no puedo parecer para conseguir que funcionen para mi código!

Bundle goTobluetooth = getIntent().getExtras(); test = goTobluetooth.getString("ImageUri"); 

Es lo que tengo que tirar a través, ¿cuál sería el siguiente paso?

Muchas gracias

Jake

  • ¿Cómo puedo obtener el tipo mime de un archivo con su Uri?
  • Widget de aplicación setImageViewUri no actualiza la imagen
  • Cómo usar setImageUri () en Android
  • Obtener URI de la imagen dibujable
  • Obtener el camino real para Uri Android
  • Conversión de Uri en String
  • Convertir archivo: Uri a archivo en Android
  • ¿El método notifyChange de ContentResolver notifica también el detalle de Uri?
  • 5 Solutions collect form web for “Imagen de Uri a bytesarray”

    De Uri para obtener byte[] Hago las siguientes cosas,

     InputStream iStream = getContentResolver().openInputStream(uri); byte[] inputData = getBytes(iStream); 

    Y el getBytes(InputStream) es:

     public byte[] getBytes(InputStream inputStream) throws IOException { ByteArrayOutputStream byteBuffer = new ByteArrayOutputStream(); int bufferSize = 1024; byte[] buffer = new byte[bufferSize]; int len = 0; while ((len = inputStream.read(buffer)) != -1) { byteBuffer.write(buffer, 0, len); } return byteBuffer.toByteArray(); } 

    Use getContentResolver (). OpenInputStream (uri) para obtener un InputStream de un URI. Y luego leer los datos de inputstream convertir los datos en byte [] de ese inputtream

    Intente con el siguiente código

     public byte[] readBytes(Uri uri) throws IOException { // this dynamically extends to take the bytes you read InputStream inputStream = getContentResolver().openInputStream(uri); ByteArrayOutputStream byteBuffer = new ByteArrayOutputStream(); // this is storage overwritten on each iteration with bytes int bufferSize = 1024; byte[] buffer = new byte[bufferSize]; // we need to know how may bytes were read to write them to the byteBuffer int len = 0; while ((len = inputStream.read(buffer)) != -1) { byteBuffer.write(buffer, 0, len); } // and then we can return your byte array. return byteBuffer.toByteArray(); } 

    Refiérase a este LINKs

    La mejor práctica de Java: ¡nunca olvides cerrar cada secuencia que abras! Esta es mi implementación:

     /** * get bytes array from Uri. * * @param context current context. * @param uri uri fo the file to read. * @return a bytes array. * @throws IOException */ public static byte[] getBytes(Context context, Uri uri) throws IOException { InputStream iStream = context.getContentResolver().openInputStream(uri); try { return getBytes(iStream); } finally { // close the stream try { iStream.close(); } catch (IOException ignored) { /* do nothing */ } } } /** * get bytes from input stream. * * @param inputStream inputStream. * @return byte array read from the inputStream. * @throws IOException */ public static byte[] getBytes(InputStream inputStream) throws IOException { byte[] bytesResult = null; ByteArrayOutputStream byteBuffer = new ByteArrayOutputStream(); int bufferSize = 1024; byte[] buffer = new byte[bufferSize]; try { int len; while ((len = inputStream.read(buffer)) != -1) { byteBuffer.write(buffer, 0, len); } bytesResult = byteBuffer.toByteArray(); } finally { // close the stream try{ byteBuffer.close(); } catch (IOException ignored){ /* do nothing */ } } return bytesResult; } 

    Este código funciona para mí

     Uri selectedImage = imageUri; getContentResolver().notifyChange(selectedImage, null); ImageView imageView = (ImageView) findViewById(R.id.imageView1); ContentResolver cr = getContentResolver(); Bitmap bitmap; try { bitmap = android.provider.MediaStore.Images.Media .getBitmap(cr, selectedImage); imageView.setImageBitmap(bitmap); Toast.makeText(this, selectedImage.toString(), Toast.LENGTH_LONG).show(); finish(); } catch (Exception e) { Toast.makeText(this, "Failed to load", Toast.LENGTH_SHORT) .show(); e.printStackTrace(); } 
     public void uriToByteArray(String uri) { ByteArrayOutputStream baos = new ByteArrayOutputStream(); FileInputStream fis = null; try { fis = new FileInputStream(new File(uri)); } catch (FileNotFoundException e) { e.printStackTrace(); } byte[] buf = new byte[1024]; int n; try { while (-1 != (n = fis.read(buf))) baos.write(buf, 0, n); } catch (IOException e) { e.printStackTrace(); } byte[] bytes = baos.toByteArray(); } 
    FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.