Ich schreibe eine Android App, wo zwei Geräte Bilder aus der Galerie über TCP austauschen müssen. Meine Frage ist, um getDrawable() zu verwenden, muss mein Bild im Drawable-Ordner sein? Oder kann ich die Methode mit Bildern aus der Galerie des Telefons verwenden? Vielen Dank im Voraus für die Tour-Hilfe. Bitte ertragen Sie mit mir, wenn die Frage zu dumm oder offensichtlich ist, bin ich nur ein Neuling.Kann ich getDrawable() mit Bildern aus der Galerie verwenden
Antwort
Wenn Sie Bild von
Drawable
Ordner verwenden möchten, verwenden SieContextCompat.getDrawable()
.ImageView imageView = (ImageView)findViewById(R.id.imageUpload); imageView.setImageDrawable(ContextCompat.getDrawable(this, R.drawable.IMAGE_NAME));
Wenn Sie und Bild aus der Galerie verwenden auswählen möchten, verwenden Sie
Intent
mitACTION_PICK
:Intent intent = new Intent(Intent.ACTION_PICK); intent .setType("image/*"); startActivityForResult(intent , REQUEST_CODE);
In Kürze erhalten Sie Bildpfad bekommen
imageUri
vonIntent
inonActivityResult()
Verfahren. Schließlich verwenden SieimageView.setImageBitmap()
, umbitmap
aufImageView
zu zeigen.@Override protected void onActivityResult(int reqCode, int resultCode, Intent data) { super.onActivityResult(reqCode, resultCode, data); if (resultCode == RESULT_OK) { if (requestCode == REQUEST_CODE) { try { final Uri imageUri = data.getData(); final InputStream imageStream = getContentResolver().openInputStream(imageUri); final Bitmap selectedImage = BitmapFactory.decodeStream(imageStream); imageView.setImageBitmap(selectedImage); } catch (FileNotFoundException e) { e.printStackTrace(); } } } }
Vergessen Sie nicht die Erlaubnis in AndroidManifest.xml
hinzuzufügen.
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
UPDATE:
Um das Bild über TCP
zu senden, konvertieren Sie Ihre bitmap
-byte array
und senden mit SOCKET
mit DataOutputStream
:
.................
.........................
Bitmap selectedImage = BitmapFactory.decodeStream(imageStream);
ByteArrayOutputStream bos = new ByteArrayOutputStream();
selectedImage.compress(CompressFormat.PNG, 0 /*ignored for PNG*/, bos);
byte[] array = bos.toByteArray();
OutputStream out = socket.getOutputStream();
DataOutputStream dos = new DataOutputStream(out);
dos.writeInt(array.length);
dos.write(array, 0, array.length);
............
...................
FYI, wenn Sie bitmap
von imageView
erhalten möchten . Versuchen Sie folgendes:
//Get bitmap from imageView Bitmap bitmap = ((BitmapDrawable)imageView.getDrawable()).getBitmap();
Einzelheiten: Send Image over TCP in android applications
Hope this helfen ~
Vielen Dank für Ihre Antwort, was ich wirklich mit dem Bild machen möchte, ist es über TCP zu senden. Wenn ich die zweite und dritte Lösung verwende, kann ich das nicht schaffen. – Melo
@Melo: Um ein Bild über 'TCP' zu senden, konvertieren Sie Ihre' Bitmap' in 'ByteArray' und senden Sie mit' SOCKET' mit 'DataOutputStream'. Bitte überprüfe meine aktualisierte Antwort. – FAT
- 1. Abrufen von Bildern aus der Galerie/Kamera mit MVP
- 2. Hochladen von Bildern aus der Galerie mit AFNetworking 3.0
- 3. Einrichten einer Galerie von Bildern mit NetBeans
- 4. Laden von Bildern aus der Galerie in ImageViews Separat
- 5. Kann ich numpy Gradientenfunktion mit Bildern verwenden
- 6. Hinzufügen von Bildern zur Galerie
- 7. selecta Galerie mit einem oder mehreren Bildern
- 8. Galerie-Anzeige horizontal mit Bildern mit der gleichen Größe
- 9. Innenpolster in einer Galerie von Bildern
- 10. Set App Hintergrund aus der Galerie
- 11. Wählen Sie nur GIF aus der Galerie
- 12. Anzeige von Bildern Galerie von Assets/Bilder
- 13. Get Bild aus der Galerie mit Absicht
- 14. Mehrere Bildauswahl aus der Galerie
- 15. RealPath aus der Galerie Bild
- 16. .getDrawable() nicht mit mir arbeiten [Android]
- 17. getDrawable (int) ist veraltet und kann eine NullPointerException erzeugen
- 18. Wie kann ich ein Verzeichnis von Bildern scannen und sie in meine Galerie mit PHP
- 19. Standard-WooCommerce-Galerie verwenden
- 20. Problem mit dem Stock Browser Fotos aus der Galerie auswählen
- 21. Wie kann ich Elevate Zoom nur innerhalb der Galerie zeigen
- 22. Verwenden von Tags zur Auswahl einer Gruppe von Bildern in der Galerie
- 23. Problem beim Hochladen von Bildern in cordova ionic aus der Galerie. Auswahl abgebrochen Fehler
- 24. Android: Programmgesteuert animieren zwischen Bildern im Galerie-Widget
- 25. Wie blende ich Bilder aus der Galerie in Android?
- 26. Wie funktionieren die Codes zum Laden von Bildern aus der Galerie Android
- 27. Bild kann nicht aus der Galerie geladen werden
- 28. Picasso lädt kein Bild aus der Galerie
- 29. Wie wähle ich das Video aus der Galerie in Phonegap?
- 30. Wie bekomme ich alle Dateien aus der Galerie, ohne s3eImagePicker in Marmalade zu verwenden?
Imageimageview = (Image) findViewById (R.id.imageUpload); Bitmap bmp = ((BitmapDrawable) imageUpload.getDrawable()). GetBitmap(); – Melo
Bitte sehen Sie meine Antwort unten. Hoffe es wird dir helfen zu verstehen. – FAT