Sobes.tech
Middle

Kako biste preneli fotografiju u uređivač?

sobes.tech АИ

Одговор од АИ

Постоји неколико начина:

  1. Коришћење URI-ја фајла: Ово је најчешћи и најефикаснији начин за велике фајлове, као што су фотографије.

    • Креирамо URI за фајл слике.
    • Прослеђујемо овај URI целокупној Activity помоћу Intent-а.
    // Креирамо URI из File
    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)
    
  2. Пренос 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
    
  3. Сачувавање у заједнички кеш и пренос имена фајла: Користи се за привремени приступ фајлу другим апликацијама.

    • Сачувамо фајл у привремени фолдер доступан другим апликацијама (нпр. Application-specific cache directory).
    • Прослеђујемо пут до фајла преко 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-а је пожељнија опција.