Hoşgeldin. Soru sormak veya cevaplamak için hemen üye ol.

ALAssetsLibrary Resim Ekleme

0 oy
26 kez görüntülendi
20, Şubat, 20 ios development kategorisinde burhanaksendir tarafından soruldu

Yasin üstadım merhaba,
iOS uygulamasında bir resmi cihazdaki Photos bölümünde özel bir klasöre ALAssetsLibrary writeImage ile kaydediyorum.

Ancak resim daha önce kaydedilmişse, tekrar kaydedilmesini engellemek istiyorum. İncelediğim kadarıyla iOS, Photos içine kaydedilen resimlere benzersiz bir isim atıyor:

assets-library://asset/asset.JPG?id=3ARE66E2-1321-4456-8145-GDE856E0D63R&ext=JPG

O yüzden nasıl bir kontrol sağlayacağımı bir türlü çözemedim. Bu konuda, bir örnekle yardımcı olabilir misin?

Teşekkürler.

2 Cevaplar

+1 oy
20, Şubat, 20 yasin tarafından cevaplandı

Bire bir aynı dosyaların kontrolü sağlanacaksa, hash doğrulaması bir çözüm olabilir.
Dosyanın galeriye kaydederken ayrıca bir de hash'ini alır bir yerlere kaydedersin.
Yeni bir dosya kaydedileceği zaman, yeni dosyanın hash'ini mevcut dosyaların kaydettiğin hash'leri ile karşılaştırırsın, eğer eşleşme varsa yeni dosyayı kaydetmezsin mesela

20, Şubat, 20 yasin tarafından yorumlandı

basit bir aramayla hemen şöyle bir Data extension'u buldum mesela.

extension Data {
    var md5 : String {
        var digest = [UInt8](repeating: 0, count: Int(CC_MD5_DIGEST_LENGTH))
        _ =  self.withUnsafeBytes { bytes in
            CC_MD5(bytes, CC_LONG(self.count), &digest)
        }
        var digestHex = ""
        for index in 0..<Int(CC_MD5_DIGEST_LENGTH) {
            digestHex += String(format: "%02x", digest[index])
        }
        return digestHex
    }
}

https://github.com/soffes/CommonCrypto
framework'u gerektiriyor.

imaj dosyasını, formatına göre UIImagePNGRepresentation veya UIImageJPEGRepresentation ile data'ya çevirir, daha sonrada bu extension'ile hash'ini alırsın.

20, Şubat, 20 burhanaksendir tarafından yorumlandı

Üstadım teşekkür ederim. 5- 10 foto içinde performans iyi ama, fotolar 1000 civarı olursa performans sorunu olabiliyor. Başka bir çözüm de yok gibi ben de epey baktım. Halbuki çok basit bir işlem yapmak istiyorum.

20, Şubat, 20 yasin tarafından yorumlandı

Realtime bir kontrol söz konusu olacaksa, performans sorun olabilir, evet.
O nedenle fotoğrafların hash'lerini daha önceden alıp ayrı bir yere yazmak ve oradan karşılaştırmak lazım. Her seferinde çok sayıda fotoğrafın hash'ini almak sıkıntı yaratır.

20, Şubat, 20 burhanaksendir tarafından yorumlandı
20, Şubat, 20 burhanaksendir tarafından düzenlendi

Teşekkürler. Deneyeceğim SQLite kullanıp.

+1 oy
21, Şubat, 21 burhanaksendir tarafından cevaplandı
 
En İyi Cevap

ALAssetsLibrary deprecated olmuş. İyi de olmuş aslında. Çok dandik özellikleri vardı. PHPhotoLibrary kullanmaya başladım. Resim eklerken eğer varsa ekleme olayını çok daha rahat bir şekilde çözdüm. localIdentifier kullandım.

...