Saving and restoring photos and videos in Parse (Android)

I looked at the analysis of Android documents and saw that to save photos and videos you need to initialize a new ParseFile with the name and byte [] of the data and save it.

What is the easiest way to convert a Uri image and Uri video to an array of bytes?

Here are my attempts:

 mPhoto = new ParseFile("img", convertImageToBytes(Uri.parse(mPhotoUri))); mVideo = new ParseFile ("vid", convertVideoToBytes(Uri.parse(mVideoUri))); private byte[] convertImageToBytes(Uri uri){ byte[] data = null; try { ContentResolver cr = getBaseContext().getContentResolver(); InputStream inputStream = cr.openInputStream(uri); Bitmap bitmap = BitmapFactory.decodeStream(inputStream); ByteArrayOutputStream baos = new ByteArrayOutputStream(); bitmap.compress(Bitmap.CompressFormat.JPEG, 100, baos); data = baos.toByteArray(); } catch (FileNotFoundException e) { e.printStackTrace(); } return data; } private byte[] convertVideoToBytes(Uri uri){ byte[] videoBytes = null; try { ByteArrayOutputStream baos = new ByteArrayOutputStream(); FileInputStream fis = new FileInputStream(new File(getRealPathFromURI(this, uri))); byte[] buf = new byte[1024]; int n; while (-1 != (n = fis.read(buf))) baos.write(buf, 0, n); videoBytes = baos.toByteArray(); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } return videoBytes; } private String getRealPathFromURI(Context context, Uri contentUri) { Cursor cursor = null; try { String[] proj = { MediaStore.Video.Media.DATA }; cursor = context.getContentResolver().query(contentUri, proj, null, null, null); int column_index = cursor .getColumnIndexOrThrow(MediaStore.Video.Media.DATA); cursor.moveToFirst(); return cursor.getString(column_index); } finally { if (cursor != null) { cursor.close(); } } } 

Now the convertImageToBytes and convertVideoToBytes work, but I'm just wondering if I am doing it right.

+6
source share
1 answer

From Uri, to get the byte [] I do the following things:

  ByteArrayOutputStream baos = new ByteArrayOutputStream(); FileInputStream fis = new FileInputStream(new File(yourUri)); byte[] buf = new byte[1024]; int n; while (-1 != (n = fis.read(buf))) baos.write(buf, 0, n); byte[] videoBytes = baos.toByteArray(); //this is the video in bytes. 
+7
source

Source: https://habr.com/ru/post/970421/


All Articles