5

Ich konnte ein Bild mit einer Kamera aufnehmen oder aus einer Galerie aufnehmen und es mit diesem Code in einem ImageView anzeigen. Was ich jetzt tun muss, ist dieses Bild zu verwenden und es in Parse zu laden. Ich habe hier und dort gegoogelt, um das zu tun, und ich habe nicht den richtigen Weg gefunden, es zu tun. Kann mir bitte jemand dabei helfen? Ist es möglich, das Bild von ImageView hochzuladen? Vielen Dank.Wie lade ich ein Bild zu Parse in Android hoch?

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 

Antwort

2

Lesen Sie Ihre Antwort:

Ich folgte bereits den Code, den Sie zuvor. Ich konnte das Bild zum Parsen hochladen. aber ich weiß nicht, wie ich die ausklappbare Quelle als mein Bild von Kamera/Galerie oder Bildansicht einstellen kann. - stanley Santoso

zu:

Abhishek Bansal

Ich verstehe, dass Ihr Problem ist Ihr Bild nicht Parsen?

Um zu versuchen, Ihre Frage zu beantworten:

Ich weiß nicht, wie die ziehbar Quelle wechseln mein Bild von der Kamera/Galerie oder Imageview zu sein.

1 - R.drawable.androidbegin scheint Ihr Problem, sondern die Tatsache zu sein, ist, dass Sie bereits Ihre Bitmap in Ihrem Code zu analysieren haben:

aus der Galerie ->

mImageView.setImageBitmap(BitmapFactory.decodeFile(picturePath)); 

von der Kamera ->

Bitmap photo = (Bitmap) data.getExtras().get("data"); 

2 - So würde ich su ggest am Anfang des Codes eine Variable vom Typ Bitmap zu erklären

private Bitmap yourbitmap; 

3 - weisen Sie dann die Bitmap für die Galerie und die Kamera in Ihrem Code und es verwendet, um es zu analysieren.

... 
yourbitmap = BitmapFactory.decodeFile(picturePath); 
... 
yourbitmap = (Bitmap) data.getExtras().get("data"); 
... 

4 - schließlich können Sie Ihre Bitmap wie so verwenden:

// Bitmap bitmap = BitmapFactory.decodeResource(getResources(), 
//       R.drawable.androidbegin); 
    // Convert it to byte 
        ByteArrayOutputStream stream = new ByteArrayOutputStream(); 
        // Compress image to lower quality scale 1 - 100 
        yourbitmap.compress(Bitmap.CompressFormat.PNG, 100, stream); 
        byte[] image = stream.toByteArray(); 
      ... 
+0

Vielen Dank. das funktioniert. Ich wusste nicht, dass dies die Quelle meiner Bilder ist, da das Format sehr unterschiedlich aussieht. Ich war in der Lage, den Upload-Code unter dem Fall in der onActivityForResult am unteren Rand zu platzieren. Ist es möglich, dies außerhalb von ActivityForResult zu tun? Ich denke, ich muss es in OnCreate tun, damit ich andere Informationen (Benutzername und Zeug) mit einem Klick analysieren kann, so dass sie zum selben Objekt/Klasse gehen. und dieser Code bedeutet, wenn ich ein Bild aus einer Galerie ausgewählt, dann änderte ich meine Meinung, stattdessen ein Bild zu machen, werde ich 2 Bilder hochladen. Wie mache ich das, also lade ich nur 1 Bild hoch? –

+0

hi, ja, du kannst den Upload-Code in seiner eigenen Funktion verwenden, dann kannst du ihn von überall aus referenzieren. Zum Beispiel: private myUploading() {// Konvertiere es in Byte ByteArrayOutputStream stream = new ByteArrayOutputStream(); // Komprimiere Bild auf eine niedrigere Qualitätsskala 1 - 100 yourbitmap.compress (Bitmap.CompressFormat.PNG, 100, stream); Byte [] image = stream.toByteArray(); ...} Und in deinem onActivityResult vor jeder Pause; Sie rufen den Upload mit: myUploading(); Voilà. – mourad

+0

Auch war meine Antwort die eine? Ich wollte so sehr die grüne Markierung. – mourad

2

gibt es gute Tutorials im Internet verfügbar. Im Wesentlichen ist nach dem, was Sie

Bitmap bitmap = BitmapFactory.decodeResource(getResources(), 
         R.drawable.androidbegin); 
       // Convert it to byte 
       ByteArrayOutputStream stream = new ByteArrayOutputStream(); 
       // Compress image to lower quality scale 1 - 100 
       bitmap.compress(Bitmap.CompressFormat.PNG, 100, stream); 
       byte[] image = stream.toByteArray(); 

       // Create the ParseFile 
       ParseFile file = new ParseFile("androidbegin.png", image); 
       // Upload the image into Parse Cloud 
       file.saveInBackground(); 

       // Create a New Class called "ImageUpload" in Parse 
       ParseObject imgupload = new ParseObject("ImageUpload"); 

       // Create a column named "ImageName" and set the string 
       imgupload.put("ImageName", "AndroidBegin Logo"); 

       // Create a column named "ImageFile" and insert the image 
       imgupload.put("ImageFile", file); 

       // Create the class and the columns 
       imgupload.saveInBackground(); 

Quelle tun müssen: this tutorial

auch diese Frage How to upload an image in parse server using parse api in android

+0

ich bereits den Code ein, den Sie zuvor. Ich konnte das Bild zum Parsen hochladen. aber ich weiß nicht, wie ich die ausklappbare Quelle als mein Bild von Kamera/Galerie oder Bildansicht einstellen kann. –

0

Click here zu bekommen AsyncHttpClient Bibliothek und laden Sie Ihr Bild. es ist Fette, um dein Bild hochzuladen.

public void uploadImage(Bitmap img_bit) 
{ 
    AsyncHttpClient imgupload = new AsyncHttpClient(); 
    RequestParams params = new RequestParams(); 
     if (img_bit != null) { 

      byte[] imagebyte; 
      ByteArrayOutputStream bao = new ByteArrayOutputStream(); 
      img_bit.compress(Bitmap.CompressFormat.PNG, 100, bao); 
      imagebyte = bao.toByteArray(); 
      params.put("image", new ByteArrayInputStream(imagebyte), "test"+ System.currentTimeMillis() + ".png"); 
     } 
     imgupload.post("url",params, new AsyncHttpResponseHandler() { 

          @Override 
          public void onSuccess(int arg0, Header[] arg1, 
            byte[] arg2) { 
           System.out.println("Image Upload successfully"); 
          } 

          @Override 
          public void onFailure(int arg0, Header[] arg1, 
            byte[] arg2, Throwable arg3) { 
           System.out.println("faile the data"); 
          } 
         }); 


    }