2010-08-28 3 views
0

J'ai une table sqlite avec 500 enregistrements contenant chacune des images stockées sous forme de données BLOB. Les images sont toutes de grande taille et j'ai besoin de faire des versions miniatures de chaque image, puis les enregistrer dans un champ séparé.Enregistrement d'images à partir d'une table sqlite

Est-ce que quelqu'un sait quelle serait la manière optimale d'aborder cette tâche?

Une autre question - est-il recommandé d'avoir une table séparée pour stocker les images?

merci à l'avance

+0

Tout d'abord, ne stockez pas d'images dans une base de données. – Jauzsika

+0

pourquoi pas? beaucoup de gens semblent être en faveur de cela. – hanumanDev

+1

@hanumandev: Stockez-les sur le système de fichiers et placez l'URL dans votre base de données. –

Répondre

1

Le plus simple est d'abord faire une requête pour obtenir toutes les clés de ligne à traiter, mais pas données BLOB. Ensuite, parcourez cette liste (pas en SQL) et récupérez les données BLOB de la ligne en question, générez la miniature par n'importe quel moyen, puis réécrivez-la dans la colonne des vignettes de la ligne. Cela peut prendre un certain temps, mais au moins, vous n'aurez pas à vous soucier des limites de mémoire ou d'autres non-sens frustrants. C'est une bonne idée de le faire quand vous pouvez être sûr que rien d'autre n'utilise la base de données afin de ne pas avoir à vous inquiéter des transactions, et une fois que vous l'avez fait, mettez à jour votre code d'insertion/mise à jour à jour au cours du traitement plutôt que comme une étape de lot séparé. Pour savoir si les images doivent figurer dans la base de données, c'est une bonne idée. Les vignettes devraient probablement être, mais les données d'image elle-même pourraient être assez grandes (en particulier avec plus de lignes), alors peut-être devrait vivre en tant que fichiers séparés avec seulement les noms de fichiers dans la base de données. Vous devez équilibrer la capacité à traiter normalement les données plus rapidement (en n'ayant pas toutes ces données d'image) contre la capacité de garder toutes les données cohérentes (trop facile d'avoir des problèmes si quelque chose fouille dans les données d'image). Je ne peux pas vraiment répondre à cela pour vous car cela nécessite une connaissance plus approfondie de l'application - c'est votre travail - mais j'espère que cela vous dit à quoi vous devriez penser lors de la prise de décision.

1

Comme Jauzsika a dit ne l'image pas de magasin sur la base de données, howeever si vous avez la base de données avec les images que vous pouvez boucler sur toutes les tables et vérifiez que la colonne est blob, puis boucle un peu plus de toutes les lignes - obtenir données de la cellule et vous avez l'image (ok, données - mais il est facile de créer une image lorsque vous avez des données) ;-)

Je sais, mon grammaire anglaise est brillante.

chèque: http://www.sqlite.org/faq.html#q7

Questions connexes