J'ai une table qui stocke les pages du manuel d'instructions. tout en travaillant sur l'application et fini d'ajouter un livre d'instuction, j'ai trouvé que la table était plus de 200 Mo, mais le fichier PDF contenant les pages était seulement 70MB 438 Pages.Vous devez modifier la compression des images stockées dans la base de données SQLite avec XOJO mais obtenir une erreur pendant le processus
Le problème est qu'il enregistre les images en qualité maximale. Maintenant, je veux faire un script qui va sur chaque enregistrement ouvre les images et l'enregistre à nouveau comme une compression moyenne.
J'ai créé un ensemble d'enregistrements et une boucle pour parcourir chaque enregistrement afin de changer la compression, mais l'application se bloque à mi-chemin du processus.
Peu importe comment je change le code, il se bloque toujours.
J'ai donc pris une autre approche et fait une boucle de 200 enregistrements. Cela se passe bien, mais il n'a pas changé la taille du fichier de la base de données ???
L'erreur d'exécution est un UnsupportedOperationException
, comme indiqué ici:
Voici le code:
dim rs as RecordSet
rs=lego.LegoData.SQLSelect("SELECT * FROM Books")
dim resize as Picture
while not rs.EOF
resize = picture.FromData(rs.Field("intructions").StringValue)
rs.Edit
rs.Field("intructions").StringValue = resize.GetData(Picture.FormatJPEG, Picture.QualityMedium)
rs.Update
rs.MoveNext
wend
D'une certaine façon, il lit NIL
après 200 dossiers, mais ce n'est pas NIL
. L'erreur ne se produit pas chaque fois au même enregistrement, il a sa propre volonté?
Des suggestions? Je veux intégrer une fonction de compression d'image de livre ainsi les gens peuvent rendre le manuel exporté plus petit.
J'ai ajouté une limite au sql pour ne faire que 200 lignes, et l'ai changé manuellement pour parcourir toute la table de 800+ lignes. Ma base de données est plus petite maintenant, et était une solution de contournement rapide pour le moment.pas d'erreur, cela signifie que ce n'est pas parce que des données corrompues – Berry
Il se peut que Xojo ait une fuite de mémoire ici. Je vous suggère de demander l'aide du forum Xojo. Ce n'est pas le bon endroit pour trouver des bugs. –