2017-09-27 9 views
1

J'avais l'impression que UIImage supporterait les fichiers HEIC/HEIF introduits dans iOS 11. Dans mes tests, cela ne semble pas être le cas. Si je laisse image = UIImage (nommé: "test") qui pointe vers test.heic alors l'image est nulle. Si j'utilise un littéral d'image, il bloque l'application. Vous vous demandez si ce n'est pas encore implémenté pour le moment. Merci.HEIC/HEIF supporté par UIImage

Répondre

2

Alors que les travaux de réponse de Zhao, il est assez lent. Le ci-dessous est environ 10-20 fois plus rapide. Il ne fonctionne toujours pas dans le simulateur pour une raison quelconque, gardez cela à l'esprit.

func convert(url: URL) -> UIImage? { 
    guard let source = CGImageSourceCreateWithURL(url as CFURL, nil) else { return nil } 
    guard let cgImage = CGImageSourceCreateImageAtIndex(source, 0, nil) else { return nil } 
    return UIImage(cgImage: cgImage) 
} 

C'est un peu décrit à la page 141 des diapositives d'une session WWDC mais était pas super clair pour moi avant: https://devstreaming-cdn.apple.com/videos/wwdc/2017/511tj33587vdhds/511/511_working_with_heif_and_hevc.pdf

Malheureusement je n'ai toujours pas été en mesure de trouver un moyen Pour utiliser des images dans le dossier xcassets, vous devrez soit inclure les fichiers en dehors des ressources, soit les extraire du Web. Si quelqu'un connaît un moyen de contourner cela s'il vous plaît poster.

1

Vous pouvez charger HEIF via CIImage, puis convertir à UIImage

CIImage *ciImage = [CIImage imageWithContentsOfURL:url]; 
imageView.image = [UIImage imageWithCIImage:ciImage]; 
+0

Merci @zhao yang. Juste pour info à tout le monde cela ne fonctionne pas sur le simulateur sur Mac OS Sierra ou High Sierra. J'ai fait un test sur mon 6s car je voulais voir combien de temps le temps de chargement était entre une image de la même taille de pixel. Voici mes résultats: jpeg a pris: 0.039974667 secondes HEIF a pris: 0.464739167 secondes HEIF a pris: 0.279650166 secondes jpeg a pris: 0.021772125 secondes jpeg a pris: 0.056782417 secondes HEIF a pris: 0.194127875 secondes –