• 18-03-2023, 18:41:55
    #1
    Merhaba arkadaşlar
    Flutter öğrenmeye çalışıyorum. Image picker ile eklediğim resmin yolunu hep yanlış buluyorum.
    Emulater bana resmin yolunu şöyle gösteriyor :
    /data/user/0/com.example.fotoyukle/cache/e50f0995-caaf-4391-864b-0d0b017a5eed/landscape-3127859_1920.jpg

    Halbuki resmin yolu şöyle : storage/emulated/0/Download/

    Kodlarım aşağıdaki gibidir :

    Future getImage(ImageSource source) async{
    final image = await ImagePicker().pickImage(source: source);
    if(image == null) return;
    final imageTemporary = io.File(image.path);

    setState(() {
    this._image = imageTemporary;
    print(_image!.path);
    });

    }
  • 18-03-2023, 19:47:24
    #2
    Emulatorde gördüğünüz yol, gerçekte cihazınızda bulunan dosya yoluyla farklı olabilir. Bu nedenle, dosya yolunu doğru şekilde elde etmek için birkaç şeyi kontrol etmeniz gerekir.
    Flutter'da Image Picker kullanıyorsanız, seçilen görüntü, önbellekte bir dosya olarak saklanır. Bu dosya, önbellek dosyalarının bulunduğu bir konuma kaydedilir. Bu konum, 'getTemporaryDirectory()' fonksiyonu tarafından döndürülen yol tarafından temsil edilir. Bu yolu kullanarak resmin yolunu bulabilirsiniz.
    Aşağıdaki örnek kodda, getImage() fonksiyonunuzun içinde birkaç değişiklik yaparak resmin yolunu alabilirsiniz:

    import 'package:path_provider/path_provider.dart'; // Path provider kütüphanesi ekleyin
    
    Future getImage(ImageSource source) async {
      final image = await ImagePicker().pickImage(source: source);
      if (image == null) return;
    
      final tempDir = await getTemporaryDirectory(); // Önbellek dizini yolunu alın
      final imageTemporary = io.File('${tempDir.path}/${DateTime.now().toString()}.jpg'); // Önbellek dizininde yeni bir dosya oluşturun ve adını resim dosyasının adıyla ayarlayın
      await imageTemporary.writeAsBytes(await image.readAsBytes()); // Görüntüyü bu dosyaya kaydedin
    
      setState(() {
        this._image = imageTemporary;
        print(_image!.path);
      });
    }
    Bu kod, önbellek dizini içinde yeni bir dosya oluşturur ve seçilen resmi bu dosyaya kaydeder. Dosya yolunu da _image!.path kullanarak yazdırır.
    Önbellek dosyaları genellikle uygulama kullanımı sırasında saklandıkları için, dosyanın otomatik olarak silinmesi için herhangi bir işlem yapmanıza gerek yoktur. Bununla birlikte, resmi kalıcı bir yere kaydetmek isterseniz, dosyayı farklı bir konuma taşıyabilirsiniz.

    Chatgpt'ye sordum hocam, işinize yarar mı emin değilim
  • 19-03-2023, 10:11:30
    #3
    kalipsotr adlı üyeden alıntı: mesajı görüntüle
    Emulatorde gördüğünüz yol, gerçekte cihazınızda bulunan dosya yoluyla farklı olabilir. Bu nedenle, dosya yolunu doğru şekilde elde etmek için birkaç şeyi kontrol etmeniz gerekir.
    Flutter'da Image Picker kullanıyorsanız, seçilen görüntü, önbellekte bir dosya olarak saklanır. Bu dosya, önbellek dosyalarının bulunduğu bir konuma kaydedilir. Bu konum, 'getTemporaryDirectory()' fonksiyonu tarafından döndürülen yol tarafından temsil edilir. Bu yolu kullanarak resmin yolunu bulabilirsiniz.
    Aşağıdaki örnek kodda, getImage() fonksiyonunuzun içinde birkaç değişiklik yaparak resmin yolunu alabilirsiniz:

    import 'package:path_provider/path_provider.dart'; // Path provider kütüphanesi ekleyin
    
    Future getImage(ImageSource source) async {
      final image = await ImagePicker().pickImage(source: source);
      if (image == null) return;
    
      final tempDir = await getTemporaryDirectory(); // Önbellek dizini yolunu alın
      final imageTemporary = io.File('${tempDir.path}/${DateTime.now().toString()}.jpg'); // Önbellek dizininde yeni bir dosya oluşturun ve adını resim dosyasının adıyla ayarlayın
      await imageTemporary.writeAsBytes(await image.readAsBytes()); // Görüntüyü bu dosyaya kaydedin
    
      setState(() {
        this._image = imageTemporary;
        print(_image!.path);
      });
    }
    Bu kod, önbellek dizini içinde yeni bir dosya oluşturur ve seçilen resmi bu dosyaya kaydeder. Dosya yolunu da _image!.path kullanarak yazdırır.
    Önbellek dosyaları genellikle uygulama kullanımı sırasında saklandıkları için, dosyanın otomatik olarak silinmesi için herhangi bir işlem yapmanıza gerek yoktur. Bununla birlikte, resmi kalıcı bir yere kaydetmek isterseniz, dosyayı farklı bir konuma taşıyabilirsiniz.

    Chatgpt'ye sordum hocam, işinize yarar mı emin değilim
    Çok ilginç dediği gibi oluyor. Spoiler güzel oldu
  • 19-03-2023, 13:41:48
    #4
    Hygge adlı üyeden alıntı: mesajı görüntüle
    Çok ilginç dediği gibi oluyor. Spoiler güzel oldu
    İşinize yaramasına çok sevindim, keşke ChatGpt değil ben çözebilseydim