Sobes.tech
Middle

Şəkli redaktora necə köçürərdiniz?

sobes.tech Süni İntellekt

AI-dan cavab

Bir neçə üsul mövcuddur:

  1. Fayl URI-dən istifadə: Bu, böyük fayllar, məsələn, şəkillər üçün ən yaygın və effektiv üsuldur.

    • Şəkil faylı üçün URI yaradın.
    • Bu URI-ni məqsədli Activity-ə Intent vasitəsilə göndərin.
    // Fayldən URI yaradın
    val imageFile = File(filesDir, "my_photo.jpg")
    val imageUri = FileProvider.getUriForFile(this, "${packageName}.provider", imageFile)
    
    // Intent yaradın və URI əlavə edin
    val editIntent = Intent(Intent.ACTION_EDIT)
    editIntent.setDataAndType(imageUri, "image/*")
    editIntent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION) // URI-yə giriş üçün vacib
    
    // Activity-i işə salın
    startActivity(editIntent)
    
  2. Bitmap-i Intent vasitəsilə ötürün: Kiçik şəkillər və ya önizləmələr üçün uyğundur. Bitmap serializə olunur, bu da böyük ölçülü şəkillərdə TransactionTooLargeException xətalarına səbəb ola bilər.

    // Bitmap-i əldə edin
    val bitmap: Bitmap = ... // Sizin Bitmap
    
    // Intent yaradın və Bitmap-i əlavə edin
    val editIntent = Intent(this, EditorActivity::class.java)
    editIntent.putExtra("image_bitmap", bitmap) // Bitmap serializə olunur
    
    // Activity-i işə salın
    startActivity(editIntent)
    

    Hədəf Activity-də:

    val bitmap = intent.getParcelableExtra<Bitmap>("image_bitmap")
    // Bitmap-dən istifadə edin
    
  3. Ümumi cache-də saxlayın və fayl adını ötürün: Bu, digər tətbiqlər üçün müvəqqəti fayl erişimi üçün istifadə olunur.

    • Faylı müvəqqəti qovluqda saxlayın, bu digər tətbiqlər üçün əlçatan olsun (məsələn, tətbiqə xas cache qovluğu).
    • Faylın yolunu Intent vasitəsilə ötürün.
    • Hədəf tətbiq bu qovluqda oxuma hüququna malik olmalıdır.
    // Faylı müvəqqəti qovluqda saxlayın
    val tempFile = File(cacheDir, "temp_photo.jpg")
    // Fotoqraf məlumatlarını tempFile-ə yazın
    
    // Intent yaradın və fayl yolunu ötürün
    val editIntent = Intent(this, EditorActivity::class.java)
    editIntent.putExtra("image_path", tempFile.absolutePath)
    
    // Activity-i işə salın
    startActivity(editIntent)
    

    Hədəf Activity-də:

    val imagePath = intent.getStringExtra("image_path")
    val imageFile = File(imagePath)
    // imageFile-dan məlumatları oxuyun
    

Yöntem seçimi, şəkilin ölçüsünə və Activity-lər arasında məlumat mübadiləsi tələblərinə bağlıdır. Böyük şəkillər üçün URI və FileProvider üstünlük təşkil edir.