Page 1 of 3

Mise à jour mViewer GX Creator avec économie de mémoire

Unread postPosted: 08 Jan 2014, 02:06
by critor
Dans une actualité précédente, nous réparions une grande injustice que subissaient les possesseurs des nouvelles calculatrices TI-Nspire CX anti-Ndless 3.1 commercialisées depuis la rentrée 2013, avec notre outil en ligne révolutionnaire, mViewer GX Creator. :o

Cet outil te permettait de convertir tout groupe de documents PDF et images en un document TI-Nspire avec une image défilable (scrollable) et zoomable par page ! :bj:

En cela, ces utilisateurs si longtemps privés obtenaient des fonctionnalités similaires à celle du programme Ndless mViewer CX 4.1, et parfois même supérieures avec le support du multi-pages, et, cela va sans dire, infiniment supérieures à celles du lecteur d'images, si tant est que l'on puisse se permettre de le nommer ainsi, inclus par défaut avec le système TI-Nspire. :D



Certains d'entre vous nous avaient signalé des problèmes de mémoire.
Cela dépendait bien évidemment de la résolution de l'image ou du PDF, ainsi que du nombre de pages.

Par exemple, si l'on utilise des images de format A4 en orientation portrait et en 640 pixels de large (ce qui permet habituellement une bonne lisibilité, même sur les documents PDF où c'est écrit en petit), la TI-Nspire CX affichera correctement des documents mViewer GX de 7 pages, et signalera une erreur de mémoire sur la dernière page d'un document de 8 pages.

Mais le problème, c'est que plus l'on met de pages, plus l'utilisation simultanée de mémoire est forte, et plus l'erreur de mémoire se produit tôt. Par exemple si l'on prend le même document avec 16 pages, c'est autour de la 4ème que se produira la première erreur de mémoire et seules les 3 à 4 premières pages seront visibles.



Pour remédier à cela et vous garantir des documents utilisables lors de vos examens, plusieurs changements ont été apportés à l'outil en ligne mViewer GX Creator.

D'une part, les documents 'propres' sont désormais automatiquement rognés afin de se concentrer sur le contenu utile qui occupera moins de place ou aura une meilleure visibilité.
Pour le rognage de documents scannés il vous suffit d'entrer un pourcentage de marge d'erreur non nul.

D'autre part, le nombre maximal de pages dans un fichier TI-Nspire est désormais fixé à 6 par sécurité.
Cela ne veut pas dire que vous ne pourrez pas convertir de document PDF de plus de 6 pages, bien au contraire. En fait, l'outil vous générera une archive contenant plusieurs fichiers TI-Nspire avec jusqu'à 6 pages chacun.


Enfin, dans le format TI.Image utilisé par le langage TI-Nspire Lua, la couleur d'un pixel est normalement codée avec 8 caractères. (ce qui est monstrueusement déplorable, j'en conviens parfaitement)
Selon la valeur de cette couleur, dans plusieurs cas particuliers il est possible d'utiliser moins de caractères selon différentes astuces: 6, 5 ou parfois même 2 caractères.

mViewer GX Creator dispose d'un nouveau champ permettant une compression à perte pour économiser de la mémoire, sous la forme d'une valeur allant de 0 à 96 et réglée par défaut à 3.
Le compresseur se permet de remplacer une couleur par une couleur proche, à condition que celle-ci soit codée avec moins de caractères.

La valeur indiquée représente en fait un maximum de décalage par couleur:
  • 0 indique une absence de compression car aucun décalage n'est permis
  • 3 est la valeur par défaut actuelle, permettant un décalage de 3 unités sur 32 sur un canal rouge/vert/bleu, ou bien d'1 unité sur 32 sur tous les canaux
  • 96 est le décalage maximum, produisant bêtement une image toute blanche, le blanc étant la meilleure couleur en Lua puisque ne nécessitant que 2 caractères si on le considère comme du transparent

C'est donc une compression par altération de couleurs, qui sera particulièrement adaptée aux documents PDF 'propres' (non scannés), documents qui en dehors de quelques illustrations présenteront de larges zones de couleur unie et un nombre relativement faible de couleurs différentes.

Elle sera par contre inadaptée à la conversion d'images de qualité photographique, présentant ainsi nombre de couleurs et de dégradés. Cela ne semble pas être l'usage majoritaire de l'outil, mais il suffit dans ce cas-là de passer la valeur de 3 à 0 pour éviter la dégradation d'image visible ci-dessous sur le dégradé du ciel:


Comme vous pouvez le remarquer, le reste de l'image semble paradoxalement correct. En effet, ce n'est pas une dégradation uniforme de l'image, puisque le compresseur cible des marges d'erreur autour de certaines valeurs de couleur bien spécifiques - et c'est hélas le contraste ainsi créé qui choque sur une image photographique.
Rajoutons à cela que le format TI.Image utilise des couleurs au format ARGB-1555 (5 bits par canal de couleur, soit 32 valeurs), et qu'un simple décalage d'une unité a donc des conséquences visuelles bien plus lourdes que dans le format usuel RGB-888 (8 bits par canal de couleur, soit 256 valeurs)
.





Comment faire donc, pour remédier à ce problème de mémoire si vous avez déjà généré un document mViewer GX avec beaucoup trop de pages ? Rien de plus facile, nous avons déjà tout prévu pour vous - nul besoin de vous retaper tout le remplissage du formulaire ! :bj:
Il vous suffit tout simplement via le menu illustré ci-contre de lister vos fichiers déjà générés sur le site, de les éditer et de valider directement la regénération avec l'un des deux boutons d'action en bas du formulaire que vous connaissez bien sans avoir besoin de rien y changer. :D
Le fichier alors téléchargé disposera de toutes les nouvelles fonctionnalités décrites ci-dessus ! :=):




Nous continuons de notre côté à rechercher divers moyens pour faire économiser la mémoire de la calculatrice à notre script Lua, espérant ainsi pouvoir repousser la limite du nombre de pages affichables simultanément sans erreur mémoire dans un unique document TI-Nspire.
Si nous y arrivons, il suffira de mettre à jour votre document avec le nouveau script par une simple édition comme décrit ci-dessus. :)

Bonne continuation sur TI-Planet ;)



Liens :
mViewer GX Creator
Le format TI.Image du langage TI-Nspire Lua

Re: Mise à jour mViewer GX Creator avec économie de mémoire

Unread postPosted: 08 Jan 2014, 06:51
by NspireCas
Super :#top#:
Merci critor :)

Re: Mise à jour mViewer GX Creator avec économie de mémoire

Unread postPosted: 08 Jan 2014, 08:06
by Hayleia
critor wrote:la dégradation d'image visible ci-dessous sur le dégradé du ciel

C'est un dégradé dégradé :P

Jeux de mots pourris mis à part, excellentes nouvelles ! :#top#:

critor wrote:D'une part, les documents 'propres' sont désormais automatiquement rognés afin de se concentrer sur le contenu utile qui occupera moins de place ou aura une meilleure visibilité.
Pour le rognage de documents scannés il vous suffit d'entrer un pourcentage de marge d'erreur non nul.
Est-ce qu'il serait possible de rogner les documents lors de la création pour économiser de la mémoire (ce que vous faites déjà) mais ensuite d'afficher quand même ces marges lors de la visualisation sur calculatrice ? C'est à dire en gros de permettre de scroller un peu plus loin que la fin de l'image en affichant du blanc ? Ça serait à la fois pratique (car pas d'erreurs mémoires) et confortable (car le texte ne serait pas pile sur le bord de l'écran) :)

Re: Mise à jour mViewer GX Creator avec économie de mémoire

Unread postPosted: 08 Jan 2014, 09:38
by AnToX98
C'est vraiment super, merci :bj:

Ce qui serait vraiment super, ce serait de pouvoir avoir toutes ses images du classeur sur la même page. Pourquoi ne pas construire une petite GUI avec des dossiers ou l'on pourrait tranquillement trier, ranger et ouvrir ses images ? Ce ne doit pas être bien compliqué à faire :)...

Re: Mise à jour mViewer GX Creator avec économie de mémoire

Unread postPosted: 08 Jan 2014, 09:39
by Neo
AnToX98 wrote:C'est vraiment super, merci :bj:

Ce qui serait vraiment super, ce serait de pouvoir avoir toutes ses images du classeur sur la même page. Pourquoi ne pas construire une petite GUI avec des dossiers ou l'on pourrait tranquillement trier, ranger et ouvrir ses images ? Ce ne doit pas être bien compliqué à faire :)...


oui, ce serait super comme idée, pour ceux qui ont beaucoup de documents :D

Re: Mise à jour mViewer GX Creator avec économie de mémoire

Unread postPosted: 08 Jan 2014, 10:34
by Adriweb
Hmm, ca serait sujet à d'autant plus de problèmes de mémoire (si tout est sur un onglet et qu'il n'y a plus assez de mémoire pour tout, ben tu perds tout d'un coup, et pas qu'une partie).
Et par ailleurs, ca ne serait pas si évident à faire, nan :P (faisable mais pas trivial non plus)

Re: Mise à jour mViewer GX Creator avec économie de mémoire

Unread postPosted: 08 Jan 2014, 11:06
by critor
@AnToX98: si tu parles de visualiser ses pages, c'est déjà disponible avec :nsct: :nsha: :
Image

Sinon pour des documents, ça me semble très complexe, surtout que le Lua sur TI-Nspire ne gère pas les fichiers.
Sinon, il n'est ni raisonnable ni envisageable de rajouter une telle fonctionnalité majeure tant que le problème de mémoire n'est pas résolu.

Re: Mise à jour mViewer GX Creator avec économie de mémoire

Unread postPosted: 08 Jan 2014, 11:10
by Adriweb
Mais pour le fait de pouvoir se déplacer de quelques pixels en haut et à gauche en dessous de zéro pour se créer une "marge virtuelle", c'est sans problème, oui.

Re: Mise à jour mViewer GX Creator avec économie de mémoire

Unread postPosted: 08 Jan 2014, 12:42
by AnToX98
Je ne vois pas quel est le problème... Voici à quoi ressemblerait le code :

Code: Select all
image1 = image.new(--code)
image2 = image.new(--code)
image3 = image.new(--code)

images = {image1, image2, image3}
currentImage = 0

function on.arrowKey(key)
  if key == "right" then
    currentImage = currentImage + 1
  elseif key == "left" then
    currentImage = currentImage - 1 
  end 
  platform.window:invalidate()
end

function on.paint(gc)
  -- GUI
  if currentImage > 0 then
    gc:drawImage(images[currentImage],x,y)
  end
end

Re: Mise à jour mViewer GX Creator avec économie de mémoire

Unread postPosted: 08 Jan 2014, 13:04
by critor
Ah ben déjà qu'on a des problèmes de mémoire à gérer, tu utilises 3 images... ça ne va rien arranger.

Et non, mViewer GX dans sa forme actuelle n'est absolument pas prévu pour gérer les pages - cette fonctionnalité est confiée au système TI-Nspire.
C'est donc:
  • :nsct: :nsdr: pour la page suivante
  • :nsct: :nsga: pour la page précédente
  • :nsct: :nsha: pour la liste de toutes les pages

Puis-je savoir en quoi cette fonctionnalité standard (pourquoi réinventer la roue ?...) ne répond pas à ton besoin ?