Middle
Πώς θα μεταφέρατε μια φωτογραφία σε έναν επεξεργαστή;
sobes.tech AI
Απάντηση από AI
Υπάρχουν διάφοροι τρόποι:
-
Χρήση URI αρχείου: Είναι ο πιο συνηθισμένος και αποδοτικός τρόπος για μεγάλα αρχεία, όπως φωτογραφίες.
- Δημιουργήστε ένα URI για το αρχείο εικόνας.
- Μεταδώστε αυτό το URI στην προοριζόμενη Activity μέσω ενός Intent.
// Δημιουργία URI από αρχείο val imageFile = File(filesDir, "my_photo.jpg") val imageUri = FileProvider.getUriForFile(this, "${packageName}.provider", imageFile) // Δημιουργία Intent και προσθήκη URI val editIntent = Intent(Intent.ACTION_EDIT) editIntent.setDataAndType(imageUri, "image/*") editIntent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION) // Σημαντικό για πρόσβαση στο URI // Εκκίνηση Activity startActivity(editIntent) -
Μεταφορά Bitmap μέσω Intent: Κατάλληλο για μικρές εικόνες ή προεπισκοπήσεις. Το Bitmap σειριοποιείται, κάτι που μπορεί να προκαλέσει σφάλματα
TransactionTooLargeExceptionσε μεγάλες διαστάσεις.// Λήψη Bitmap val bitmap: Bitmap = ... // Το Bitmap σας // Δημιουργία Intent και προσθήκη Bitmap val editIntent = Intent(this, EditorActivity::class.java) editIntent.putExtra("image_bitmap", bitmap) // Το Bitmap σειριοποιείται // Εκκίνηση Activity startActivity(editIntent)Στην προοριζόμενη Activity:
val bitmap = intent.getParcelableExtra<Bitmap>("image_bitmap") // Χρησιμοποιήστε το bitmap -
Αποθήκευση στην κοινόχρηστη cache και μεταφορά ονόματος αρχείου: Χρησιμοποιείται για προσωρινή πρόσβαση στο αρχείο από άλλες εφαρμογές.
- Αποθηκεύστε το αρχείο σε έναν προσωρινό φάκελο προσβάσιμο σε άλλες εφαρμογές (π.χ., συγκεκριμένο φάκελο cache της εφαρμογής).
- Μεταδώστε το μονοπάτι του αρχείου μέσω ενός Intent.
- Η προοριζόμενη εφαρμογή πρέπει να έχει δικαιώματα ανάγνωσης σε αυτόν τον φάκελο.
// Αποθήκευση αρχείου σε προσωρινό φάκελο val tempFile = File(cacheDir, "temp_photo.jpg") // Γράψτε δεδομένα φωτογραφίας στο tempFile // Δημιουργία Intent και μεταφορά μονοπατιού αρχείου val editIntent = Intent(this, EditorActivity::class.java) editIntent.putExtra("image_path", tempFile.absolutePath) // Εκκίνηση Activity startActivity(editIntent)Στην προοριζόμενη Activity:
val imagePath = intent.getStringExtra("image_path") val imageFile = File(imagePath) // Διαβάστε δεδομένα από το imageFile
Η επιλογή της μεθόδου εξαρτάται από το μέγεθος της φωτογραφίας και τις απαιτήσεις ανταλλαγής δεδομένων μεταξύ των Activity. Για μεγάλες εικόνες, η URI μέσω FileProvider είναι η προτιμώμενη επιλογή.