images "tronquées"

Bonjour,

Une petite question concernant l’affichage des photos dans la table lumineuse, s’il vous plaît?
Pourquoi certaines photos ne veulent pas s’ouvrir et sont remplacées par des dessins cabalistes blancs sur fond noir ?

Je vous remercie.
Cordialement.
Christian

darktable affiche une tête de mort quand il ne peut pas afficher la photo qu’il connaît pourtant dans sa BdD. Cela arrive essentiellement quand tu déplaces, renommes, supprimes une/des photo(s) en dehors de darktable ; avec un explorateur de fichier par exemple. Le contenu de la BdD et le contenu du/des dossier(s) ne sont alors plus synchrones et les photos introuvables sont remplacées par des têtes de mort.

Salut, tu peux utiliser ce script darktable fermé:
c’est un script que j’ai récupéré sur le net (p-e même ici) mais malheureusement je ne peux pas citer la source
car je ne retrouve pas la page en question.
En revanche ça fonctionne nickel pour nettoyer la bd de DT.
Je crois avoir compris que dans la future version une fonction similaire sera intégrée.

[code]#!/bin/bash

DARKTABLE DATABASE CLEANER

This script removes from the database the files

that are not located where they are supposed to be.

USAGE :

./darktable_db_cleaner.sh

Will use the database located in :

~/.config/darktable/library.db

./darktable_db_cleaner.sh /path/to/library.ext

Will use the specified database

Created by Rufus Wilson

contact : marsou75@gmail.com

if [ ! « type -t sqlite3 »==« file » ] ; then
echo « sqlite3 is required »
sudo apt-get install sqlite3
fi

if [ -f « $1 » ] ; then
library=« $1 »
else
library=« /home/ »$USER"/.config/darktable/library.db"
fi

for film_roll_id in sqlite3 -noheader -list -interactive $library "SELECT id FROM film_rolls WHERE 1 ORDER BY id ASC;"
do
film_roll_folder=« sqlite3 -noheader -list -interactive $library "SELECT folder FROM film_rolls WHERE id=$film_roll_id ORDER BY id ASC;" »
echo « *** « $film_roll_folder » *** »

echo "-- cleaning database"
for photo_id in `sqlite3 -noheader -list -interactive $library "SELECT id FROM images WHERE film_id=$film_roll_id ORDER BY filename ASC;"`
do
    photo_filename=`sqlite3 -noheader -list -interactive $library "SELECT filename FROM images WHERE id=$photo_id ORDER BY filename ASC;"`
    if [ ! -f "$film_roll_folder/$photo_filename" ] ; then
        echo $photo_filename" deleted"
        sqlite3 -noheader -list -interactive $library "DELETE FROM images WHERE id=$photo_id;"
    fi
done
nb=`sqlite3 -noheader -list -interactive $library "SELECT count(id) FROM images WHERE film_id=$film_roll_id ORDER BY filename ASC;"`
if [ "$nb" -eq "0" ] ; then
    sqlite3 -noheader -list -interactive $library "DELETE FROM film_rolls WHERE id=$film_roll_id;"
fi
echo "    ->cleaned"

done

Shrink the size of database

sqlite3 -noheader -list -interactive $library « VACUUM »
[/code]

Bonsoir,

Bien le merci aux 2 correspondants qui m’ont répondu !!! Sympa de votre part.
Comment puis-je faire pour activer le script que tu proposes, Pluton ? Je ne suis pas un expert de l’informatique , et puis l’âge étant là… pas toujours facile d’assimiler les nouvelles choses.

Merci.

Cordialement.

Christian

Oula,
c’est une bien drôle de réponse…
J’ai toutes les langues affichées.

Tu copies le script dans un fichier texte tu le nommes:

darktable_db_cleaner.sh

tu ouvres un terminal dans le même répertoire, tu fais un:

chmod +x darktable_db_cleaner.sh

et tu fais:

./darktable_db_cleaner.sh

L’autre solution simple (si tu as bien déplacé les images hors dt) est de les sélectionner et de cliquer sur [enlever] dans le module [images sélectionnées] de la table lumineuse.

Et si c’est le cas… ne jamais jamais mais vraiment jamais déplacer ou renommer une image hors de darktable :slight_smile:

Bonsoir Pobry,

Merci pour ton aide ; apparemment, c’est le même principe que Lightroom ( ne jamais déplacer ou manipuler une photo en dehors de lightroom …)

Bien à toi.

Christian

Christian, tu as un problème en postant des messages.
Tu embarques dans chaque post, après ton texte, tout une liste de pays plus encore quelques informations qui semblent provenir d’une page web.Pour faciliter la lecture j’ai édité tes posts et enlevé le surplus, mais ce serait sympa si tu pouvais éviter cela directement. Merci !
[hr]

Effectivement, c’est le même principe de fonctionnement et donc les mêmes symptômes

Oui même principe, tous les deux utilisent une base de données contenant des références aux images. D’ailleurs peu de gens le savent mais dans les deux cas c’est SQlite (base de donnée embarquée libre).

Bonsoir jpverrue,

C’est Christian ; désolé pour les erreurs que j’ai commises ; tu me dis que j’embarque dans mes posts une liste de pays… je ne me suis rendu compte de rien… Je ne comprends pas.
Dorénavant, je ferai attention de ne plus commettre de tels impairs.
Merci à toi pour l’édition de mes posts.

Cordialement.

Oui c’est plus simple quand les images absentes sont contigües et peu nombreuses.

je me méfie paranoiaquement des outils genre cleaner.sh

linux mint a un outil pour monter automatiquement des disques dans des dossiers… les disques peuvent se reconnaître selon des LABELS ou via l’arborescence système et donc le programme Linux mint (preferences/disques) fait le lien entre les infos du disque et un dossier. Alors on importe les images selon le point de montage donc les infos disque.

ensuite on change quelque chose, fait une mise à jour et le disque a des infos différentes. Alors le disque se monte en /media/$USER/145-48CD un truc du genre.

Ensuite darktable affiche des têtes de mort. Il trouve pas les photos. Alors je lance la fonction clean. qui va virer tout ce qui est sur le disque monté ailleurs. donc apres la manip je remarque le probleme et je monte le disque à l’endroit précédent. et je réimporte les photos quitte à passer 2 heures pour tout relancer.. importer dossier
/media/disque Photos/Photos/

admettons que j’ai pas mis les xmp. Il faut que les bases de données fonctionnent via des liens. une photo importée a un numero d’identifiant. lorsque dans un autre traitement on veut dire traitement image dsc2563.nef l’image a un numero dans la liste des images exemple 15000. Alors quelque part on a 15000 et le traitement pour l’image 15000

si on vire l’image dans la base le numero dans le traitement reste en place. ou alors c’est que l’on fait disparaître le traitement également.

le probleme c’est que si on réimporte l’image est le numero sera le même que dans le traitement ou alors sera différent.

A coup sur, il sera différent… parce que les algos prennent la valeur maxi des identifiants + 1 et on obtient la valeur. ou alors dans les traitements on doit avoir une fonction commune entre la liste des photos et celle des traitements. et donc si tel est le cas on peut remettre les identifiants ‹ en face l’un de l’autre ›. Une solution est de mettre la date de création de la photo dans les deux endroits… mais pourquoi alors mettre un id numérique pour pas prendre de place alors que l’on a également une information comme

20170711-122548,985ms alors qu’un identifiant correspond au pire à 12cd7857 en hexa. 18 octets au lieu de 4. chercher l’erreur.

moi j’ai programme sur des bases de données. ca devient très vite infernal. Ou alors on applique des règles très restrictives et pour résumer on ne revient jamais en arrière.

les problemes c’est lorsque on exporte vers l’extérieur du programme et ensuite on réimporte apres les traitements. la seule solution c’est de faire un double.

image 15000 —> export des manips —> traitement extérieur ----> et relecture numero 125489 —> effacement enregistrement 15000 et des traitements.. là ca va marcher.

ou alors on fait une table 15000 transformée en 125489 avec un libelle « travail dans gimp ».

je suis pas fan du tout des trucs genre effacetout.sh

J’ai rien compris :smiley: