2016-10-10 4 views
5

ich ein Foto von meiner Kamera direkt in ein Laufwerk Ordner hochladen möchten:Foto hochladen ohne Kompression fahren

OutputStream outputStream = result.getDriveContents().getOutputStream(); 
        ByteArrayOutputStream bitmapStream = new ByteArrayOutputStream(); 
/* image is my Bitmap */ 
        image.compress(Bitmap.CompressFormat.PNG, 100, bitmapStream); 

        try { 
         outputStream.write(bitmapStream.toByteArray()); 
        } catch (IOException e1) { 
         Log.i(TAG, "Unable to write file contents."); 
        } 

So Im dies zu tun und es funktioniert. Das Problem ist, dass meine Bilder in Laufwerk in sehr niedriger Qualität sind und ich ein qualitativ hochwertiges Video haben muss.

Ich habe bereits versucht, diese Lösung Converting bitmap to byteArray android

Aber dann in Laufwerk ist nicht das Foto als Mediendatei erkennen und es nicht lesen kann. Ich habe vielleicht etwas versäumt.

EDIT: ich genau die gleichen Dinge getan haben, die dort https://stackoverflow.com/a/13000774/6644403 ist und tun auf diese Weise meine Bitmap in ActivityResult zu bekommen:

try { 
        mBitmapToSave = MediaStore.Images.Media.getBitmap(this.getContentResolver(), data.getData()); 
       } catch (IOException e) { 
        e.printStackTrace(); 
       } 
+0

Möglicherweise möchten Sie ein uri für das Ausgabebild bereitstellen, wie in dieser SO [question] (http://stackoverflow.com/a/10272781/5995040) erläutert. Wenn die "uri" nicht angegeben wird, gibt die Kameraabsicht nur ein Miniaturbild des Bildes zurück. Sie können auch dieses Tutorial - [Take Picture in Android] (http://www.tutorialforandroid.com/2010/10/take-picture-in-android-with.html), um zu sehen, wie die Implementierung, wie zu tun das richtig. Hoffe das hilft. –

+0

Ich habe das ausprobiert, weiß aber nicht, warum ich keinen Weg gefunden habe, die Bitmap zu bekommen. Wenn ich versuche, uri anzugeben, kann ich mein Bild in voller Größe nicht abrufen –

Antwort

1

Für tatsächliches Bild vordefinierten Pfad des aufgenommenen Bildes Get

Intent cameraIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE); 
cameraIntent.putExtra(MediaStore.EXTRA_OUTPUT, outputFileUri); 
this.startActivityForResult(cameraIntent, 101); 

Nach Aufgenommenem Bild verwenden, können Sie aufgenommenes Bild auf dem Weg zu bekommen, die in cameraIntent gesetzt. Wenn Sie den vordefinierten Pfad nicht festlegen möchten, überprüfen Sie die Intent-Daten.

if (resultCode == android.app.Activity.RESULT_OK && requestCode == 101) { 
     try {   
      path_mm = "Onsuccess_resultcode"; 
      generateNoteOnSD("photo34.txt", path_mm); 
      Bitmap photo = null; 
      if (data == null) { 
         //get Bitmap here. 
      } else { 
       Uri u1 = data.getData(); 
       //get uri and find actual path on that uri. 
       } 
      }catch(Exception ex) {} 
} 

Siehe diesen Link Upload large files to Google Drive using GD API für Google Uploadation fahren.

1

war ich nicht für Rechte an WRITE_EXTERNAL_STORAGE zu fragen, es war in meinem Manifest aber seit api23 muss ich explizit fragen und fragen, ob der Benutzer ok ist.

Jetzt ist es gut.