Sobes.tech
Middle

Kā jūs pārsūtītu fotoattēlu uz redaktoru?

sobes.tech AI

Atbilde no AI

Ir vairākas veidi:

  1. Izmantot URI failam: Tas ir visbiežāk un efektīvākais veids lieliem failiem, piemēram, fotogrāfijām.

    • Izveidojam URI attēla failam.
    • Nosūtām šo URI mērķa Activity ar Intent.
    // Izveidojam URI no Faila
    val imageFile = File(filesDir, "my_photo.jpg")
    val imageUri = FileProvider.getUriForFile(this, "${packageName}.provider", imageFile)
    
    // Izveidojam Intent un pievienojam URI
    val editIntent = Intent(Intent.ACTION_EDIT)
    editIntent.setDataAndType(imageUri, "image/*")
    editIntent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION) // Svarīgi piekļuvei URI
    
    // Sākam Activity
    startActivity(editIntent)
    
  2. Pārsūtīt Bitmap ar Intent: Der mazām attēliem vai priekšskatījumiem. Bitmap tiek serializēts, kas var izraisīt TransactionTooLargeException kļūdas lielā izmērā.

    // Saņemam Bitmap
    val bitmap: Bitmap = ... // Jūsu Bitmap
    
    // Izveidojam Intent un pievienojam Bitmap
    val editIntent = Intent(this, EditorActivity::class.java)
    editIntent.putExtra("image_bitmap", bitmap) // Bitmap serializējas
    
    // Sākam Activity
    startActivity(editIntent)
    

    Mērķa Activity:

    val bitmap = intent.getParcelableExtra<Bitmap>("image_bitmap")
    // Izmantojam bitmap
    
  3. Saglabāt kopējā kešā un nodot faila nosaukumu: Pagaidu piekļuve failam citām lietojumprogrammām.

    • Saglabājam failu pagaidu mapē, kas ir pieejama citām lietojumprogrammām (piemēram, lietojumprogrammas specifiskā kešatmiņas direktorijā).
    • Nododam ceļu uz failu ar Intent.
    • Mērķa lietojumprogramma ir jābūt tiesībām lasīt no šīs mapes.
    // Saglabājam failu pagaidu direktorijā
    val tempFile = File(cacheDir, "temp_photo.jpg")
    // Rakstām attēla datus tempFile
    
    // Izveidojam Intent un nododam ceļu uz failu
    val editIntent = Intent(this, EditorActivity::class.java)
    editIntent.putExtra("image_path", tempFile.absolutePath)
    
    // Sākam Activity
    startActivity(editIntent)
    

    Mērķa Activity:

    val imagePath = intent.getStringExtra("image_path")
    val imageFile = File(imagePath)
    // Lasām datus no imageFile
    

Izvēle ir atkarīga no attēla lieluma un datu apmaiņas starp Activity prasībām. Lieliem attēliem URI caur FileProvider ir ieteicams variants.