J'ai lutté contre ce même problème après avoir numérisé plus de 50 000 photos de famille dans OSX Photos, (je suppose qu'il s'agit d'une sorte de corruption d'image dans votre cas).
J'avais déjà 40 000 photos et Photos fonctionnait sans problème depuis des années.
Après avoir importé environ 10 000 photos que j'avais numérisées en tant que fichiers TIFF, la synchronisation iCloud s'est complètement arrêtée.
J'ai essayé de récupérer ma bibliothèque Photos DEUX FOIS, en vain. Presque chaque résultat sur ce sujet trouvé sur Google (et le support Apple) était assez inutile et j'avais déjà gaspillé deux semaines à attendre que ces deux récupérations de base de données se terminent.
J'ai donc passé du temps à fouiller dans les fichiers journaux de l'application Photos et j'ai découvert que la synchronisation échouait sur certaines photos. Non seulement elle échouait, mais elle s'arrêtait net et il n'y avait pas de véritable indication qu'il y avait un problème avec cette image spécifique.
Il s'est avéré que mon scanner photo Epson FF-680W ajoutait des valeurs EXIF incorrectes dans les fichiers TIFF. Plus précisément :
- Rotation - Provocait des problèmes de rotation dans Photos. Je faisais pivoter une photo, je sortais de l'album, je revenais et elle était dans une rotation différente.
- Emplacement - Ne pouvait JAMAIS ajouter aucun emplacement. On aurait dit qu'il y avait quelque chose, mais cela tournait toujours en boucle en vérifiant l'emplacement.
Donc, j'ai supprimé toutes les importations que j'avais faites et j'ai commencé à faire des expériences en utilisant exiftool.
À la fin, j'ai trouvé un ensemble de "valeurs par défaut" éprouvées qui ont corrigé toutes les entrées incorrectes. Vous devrez modifier les variables d'environnement en fonction de vos besoins.
exiftool -P -overwrite_original \
-XMP-photoshop:DateCreated="${DATE} ${TIME}${ZONE}" \
-XMP-xmp:CreateDate="${DATE} ${TIME}" \
-IPTC:DateCreated="${DATE}" \
-IPTC:TimeCreated="${TIME}${ZONE}" \
-ExifIFD:DateTimeOriginal="${DATE} ${TIME}" \
-ExifIFD:CreateDate="${DATE} ${TIME}" \
-ExifIFD:OffsetTime="${ZONE}" \
-ExifIFD:OffsetTimeOriginal="${ZONE}" \
-ExifIFD:OffsetTimeDigitized="${ZONE}" \
-GPS:GPSDateStamp="${DATE} ${TIME}" \
-XMP-dc:Description="${DESCRIPTION}" -IPTC:Caption-Abstract="${DESCRIPTION}" \
-XMP-dc:Subject="${KEYWORD}" -IPTC:Keywords="${KEYWORD}" \
-IPTC:ObjectName="${TITLE}" -XMP-dc:Title="${TITLE}" \
-XMP-dc:Subject="${KEYWORD}" -IPTC:Keywords="${KEYWORD}" \
-XMP-iptcExt:PersonInImage="${FACE}" \
-GPS:GPSSpeed=0 \
-IFD0:HostComputer="MacMini" \
-ExifIFD:ExifVersion=0232 \
*.tif
Format des valeurs d'environnement critiques : DATE="2021:06:23" TIME="02:41:32" ZONE="+10:00"
Le reste est en texte libre.
Sérieusement, c'est tout simplement ridicule qu'une application moderne puisse échouer de manière aussi misérable lorsque les valeurs ne sont pas "conformes".
Après avoir lutté avec cela pendant des jours, sans véritable aide d'Apple ou des résultats de Google (et sur le point d'abandonner complètement Photos), je peux comprendre la frustration de quiconque.
Voici donc ce post. J'espère qu'il évitera une tonne de frustration pour les gens.
Remarque : Pour les personnes qui souhaitent surveiller la progression de leur synchronisation, j'utilise ceci.
log stream \
--color always \
--style compact \
--predicate 'process == "cloudd" or process == "cloudphotod" or process == "photoanalysisd" or process == "photolibraryd" or process == "cloudpaird" or process == "bird" or process == "cloudpaird" or process == "Photos"' | \
perl -ne '
BEGIN {
$last = time();
}
if (/com.apple.photos.cpl.*?:.*?engine.sync.pushtotransport|com.apple.photos.*?:.*?Generic/) {
$now = time();
$diff = $now - $last;
if ($diff > 10) {
print"====================\n\n"
}
print("$diff - $_");
$last = $now;
}'
J'ajoute seulement la partie perl pour avoir un bel espacement entre les entrées de journal. Vous pourriez le condenser à juste :
log stream --color always --style compact --predicate '(process == "photolibraryd" or process == "Photos") && (subsystem == "com.apple.photos" or subsystem == "com.apple.photos.cpl")'