Intereting Posts
Android – общие настройки иногда теряются ResultReceiver vs Messenger Android O: ограничение широковещательной передачи PHONE_STATE Как сделать снимок карты Google без фактического отображения карты Как я могу отдать бесплатную копию моего платного Android-приложения? Убедитесь, что приложение Android установлено из Play-Store Java.lang.ClassCastException: libcore.net.http.HttpURLConnectionImpl не может быть добавлено в javax.net.ssl.HttpsURLConnection Удаление флага краски в Android Утечка памяти в Android при попытке отправить форму с изображением на PHP-сервер Фон вокруг круга Android становится овальным Есть ли способ скрыть системную панель в Android 3.0? Это внутреннее устройство, и я управляю навигацией Android Создание настраиваемого измерения в Google Analytics Вызов метода активности из фрагмента Ошибка «Файл пакета не был правильно подписан» – обнаружит, произойдет ли это с приложением Google Play app apk Получение событий из календаря

Как загрузить изображение в синтаксический анализатор, используя parse api в android

Я хочу загрузить изображение в облачном сервере parse в android. Но я не могу этого сделать.

Я пробовал следующий код:

Drawable drawable = getResources().getDrawable(R.drawable.profilepic) ; Bitmap bitmap = (Bitmap)(Bitmap)drawable() ByteArrayOutputStream stream = new ByteArrayOutputStream(); bitmap.compress(Bitmap.CompressFormat.PNG, 100, stream); byte[] data = stream.toByteArray(); ParseFile imageFile = new ParseFile("image.png", data); imageFile.saveInBackground(); 

Пожалуйста, дайте мне знать, как я могу это сделать.


Я добавил щедрость, чтобы найти лучший окончательный код для этой общей проблемы

Solutions Collecting From Web of "Как загрузить изображение в синтаксический анализатор, используя parse api в android"

Сохранить ParseObject в фоновом режиме

 // ParseObject ParseObject pObject = new ParseObject("ExampleObject"); pObject.put("myNumber", number); pObject.put("myString", name); pObject.saveInBackground(); // asynchronous, no callback 

Сохранить в фоновом режиме с помощью обратного вызова

 pObject.saveInBackground(new SaveCallback () { @Override public void done(ParseException ex) { if (ex == null) { isSaved = true; } else { // Failed isSaved = false; } } }); 

Вариации метода save … () включают следующее:

  saveAllinBackground() saves a ParseObject with or without a callback. saveAll(List<ParseObject> objects) saves a list of ParseObjects. saveAllinBackground(List<ParseObject> objects) saves a list of ParseObjects in the background. saveEventually() lets you save a data object to the server at some point in the future; use this method if the Parse cloud is not currently accessible. 

Как только ParseObject был успешно сохранен в Облаке, ему присваивается уникальный Object-ID. Этот Object-ID очень важен, поскольку он уникально идентифицирует экземпляр ParseObject. Например, вы должны использовать Object-ID, чтобы определить, был ли объект успешно сохранен в облаке, для извлечения и обновления заданного экземпляра объекта Parse и для удаления определенного ParseObject.

Надеюсь, вы решите свою проблему.

После битвы в течение нескольких часов здесь работает сегмент кода.

1. Данные Член класса активности

 Bitmap bmp; Intent i; Uri BmpFileName = null; 

2. Запуск камеры. Цель состоит в том, чтобы начать работу с камерой и BmpFileName, чтобы сохранить ссылку на файл

 String storageState = Environment.getExternalStorageState(); if (storageState.equals(Environment.MEDIA_MOUNTED)) { String path = Environment.getExternalStorageDirectory().getName() + File.separatorChar + "Android/data/" + this.getPackageName() + "/files/" + "Doc1" + ".jpg"; File photoFile = new File(path); try { if (photoFile.exists() == false) { photoFile.getParentFile().mkdirs(); photoFile.createNewFile(); } } catch (IOException e) { Log.e("DocumentActivity", "Could not create file.", e); } Log.i("DocumentActivity", path); BmpFileName = Uri.fromFile(photoFile); i = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); i.putExtra(MediaStore.EXTRA_OUTPUT, BmpFileName); startActivityForResult(i, 0); 

3. Чтение содержимого с выхода камеры путем переопределения onActivityResult. Цель состоит в том, чтобы получить значение переменной bmp.

 protected void onActivityResult(int requestCode, int resultCode, Intent data) { // TODO Auto-generated method stub super.onActivityResult(requestCode, resultCode, data); if (resultCode == RESULT_OK) { try { bmp = MediaStore.Images.Media.getBitmap( this.getContentResolver(), BmpFileName); } catch (FileNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } // Myocode to display image on UI - You can ignore if (bmp != null) IV.setImageBitmap(bmp); } } 

4. В поле «Сохранить событие»

 // MUST ENSURE THAT YOU INITIALIZE PARSE Parse.initialize(mContext, "Key1", "Key2"); ParseObject pObj = null; ParseFile pFile = null ; pObj = new ParseObject ("Document"); pObj.put("Notes", "Some Value"); // Ensure bmp has value if (bmp == null || BmpFileName == null) { Log.d ("Error" , "Problem with image" return; } ByteArrayOutputStream stream = new ByteArrayOutputStream(); bmp.compress(CompressFormat.PNG, 100, stream); pFile = new ParseFile("DocImage.jpg", stream.toByteArray()); try { pFile.save(); pObj.put("FileName", pFile); pObj.save(); _mParse.DisplayMessage("Image Saved"); } catch (ParseException e) { // TODO Auto-generated catch block _mParse.DisplayMessage("Error in saving image"); e.printStackTrace(); } 

// Завершить работу в моем случае. Вы можете выбрать что-то другое finish ();

Итак, вот ключевое отличие от других

  • Я вызвал инициализацию разбора. Вы можете смеяться над этим, но люди потратили час отладки кода, не понимая, что синтаксический анализ не был инициализирован
  • Используйте Save вместо SaveInBackground. Я понимаю, что он может поддерживать активность, но это желаемое поведение для меня, и что более важно, это работает

Дайте мне знать, если это не сработает

 Parse.initialize(this, "applicationId", "clientKey"); byte[] data = "Sample".getBytes(); //data of your image file comes here final ParseFile file = new ParseFile(data); try { file.save(); } catch (ParseException e) { // TODO Auto-generated catch block e.printStackTrace(); } if (file.isDirty()){ //exception or error message etc } else{ try { ParseUser.logIn("username", "password"); //skip this if already logged in } catch (ParseException e2) { e2.printStackTrace(); } ParseObject userDisplayImage = new ParseObject("UserDisplayImage"); user = ParseUser.getCurrentUser(); userDisplayImage.put("user", user); //The logged in User userDisplayImage.put("displayImage", file); //The image saved previously try { userDisplayImage.save(); //image and user object saved in a new table. Check data browser } catch (ParseException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } //See how to retrieve ParseQuery query = new ParseQuery("UserDisplayImage"); query.whereEqualTo("user", user); try { parseObject = query.getFirst(); } catch (ParseException e) { // TODO Auto-generated catch block e.printStackTrace(); } ParseFile imageFile = null; imageFile = parseObject.getParseFile("displayImage"); try { byte[] imgData = imageFile.getData(); //your image data!! } catch (ParseException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } } 

Используйте его так

  //Convert Bitmap to Byte array --For Saving Image to Parse Db. */ Bitmap profileImage= "your bitmap"; ByteArrayOutputStream blob = new ByteArrayOutputStream(); profileImage.compress(CompressFormat.PNG, 0 /* ignored for PNG */,blob); imgArray = blob.toByteArray(); //Assign Byte array to ParseFile parseImagefile = new ParseFile("profile_pic.png", imgArray); parseUser.getCurrentUser().put("columname in parse db", parseImagefile); parseUser.getCurrentUser().saveInBackground(); 

Я надеюсь, что это поможет вам..

Простой код Imageupload и восстановление с использованием Glide для синтаксического анализа.

Загрузка изображения

destination_profile – это объект File, из которого вы хотите загрузить путь изображения.

  ParseUser currentUser = ParseUser.getCurrentUser(); if (destination_profile != null) { Glide.with(getActivity()).load(destination_profile.getAbsolutePath()).asBitmap().toBytes().centerCrop().into(new SimpleTarget<byte[]>() { @Override public void onResourceReady(byte[] resource, GlideAnimation<? super byte[]> glideAnimation) { final ParseFile parseFile = new ParseFile(destination_profile.getName(), resource); parseFile.saveInBackground(new SaveCallback() { @Override public void done(ParseException e) { currentUser.put("picture", parseFile); currentUser.saveInBackground(new SaveCallback() { @Override public void done(ParseException e) { showToast("Profile image upload success"); } }); } }); } }); } 

Возврат изображения

img_userProfilePicture_bg – это приложение ImageView, в котором вы хотите установить изображение.

  ParseUser currentUser = ParseUser.getCurrentUser(); if (currentUser.has("picture")) { ParseFile imageFile = (ParseFile) currentUser.get("picture"); imageFile.getDataInBackground(new GetDataCallback() { public void done(final byte[] data, ParseException e) { if (e == null) { Glide.with(getActivity()).load(data).centerCrop().into(img_userProfilePicture_bg); } else { // something went wrong } } }); }