Casio Zip est un puissant utilitaire de conversion, de compression et de restitution d'images, extremement utile pour la programmation de jeux en mode graphique ou quand vous manquez de place mémoire ou de pictures.
Ce programme est actuellement le plus puissant pour ce qui est de la compression et de la décompression, qui est extremement rapide !
Utilisation :
Toutes les étapes de la compression sont guidées.
Deux Matrices en résultent, et sont stockées dans les Mat :
A et B
C et D
E et F
G et H
I et J
K et L
M et N
U et V
W et X
selon votre choix.
Pour les restaurer dans votre programme, éxécutez au moins une fois le programme DZIP.INI.
Puis placez une commande :
Mat a->Mat P
Mat b->Mat R
Prog "DZIP.EXE"
a correspond à la 1ere matrice (A,C,E,G,I,K,M,U,W)
b correspond à la seconde matrice (B,D,F,H,J,L,N,V,X)
Ce programme utilise la méthode de principe de la compression quadratique (qui se base sur les rectangles).
Merci à Meithal, qui a réalisé le code de la passe 1.
Impressionnant mais insuffisant! Inutilisable tant que l'on ne peut pas compresser plusieurs images dans une matrice! Si tu cherches une solution a ce problème ne prends pas en compte le temps de compression (pour l'intégrer à photo casio).
Je te l'ai déjà expliqué : c'est le temps de décompression qui en dépend.
Place les deux matrices en une seule, et tu multiplies le temps de compression par 2, ou alors tu ne compresses plus assez...
C'est quand même un problème assez ennuyeux. Sinon, muelsaco en serait réduit à utiliser quadra-compress qui même si il est moins efficace n'utilise qu'une seule matrice. Mais sinon, je pense qu'il y'a moyen de bidouiller casiozip pour tout faire entrer dans une seule matrice.
Mais de toutes manières, certaines images sont affreusement mal compressées avec ce système. La carte du monde d'Elixir par exemple nécessite 4 matrices pleines.
Je traite les pixels par paquets de 32 et un paquet correspondra a une variable. C'est à dire qu'il faut 256 variables pour stocker une image entière PEUT IMPORTE l'image (points, lignes, etc...).
Pour la suite il faut métriser le langage binaire car en fait j'assimile une pixel a un nombre binaire. En effet une pixel plein "vaut" 1 et une vide vaut 0 (bien sur çà aurait très bien pu être l'inverse mais pas la peine de s'embrouiller ) J'espère que vous suivez! Un paquet de 32 pixels est donc traduit en un nombre binaire de 32 chiffres. Ex:
pour une ligne droite :
1111111111111111111111111111111
pour du vide:
0000000000000000000000000000000
un point toutes les 2 cases:
1010101010101010101010101010101
Bien entendu si je laissais ce nombre sous cette forme (32 bits) il n'y aurait aucune compression mais juste une "sauvegarde" de l'image dans une matrice.
Je vais donc ensuite compresser ce nombre en le passant d'une base a une autre! Une petite convertion vers notre très chère base décimale est la meilleur compression possible sans perte. Vous l'aurez surement un nombre de 32 chiffres en base 2 (binaire) devient un nombre de 10 chiffres dans la base décimal. Bien entendu je tombe sur le nombre maximal que la calculatrice est capable de stocker dans une variable.
Ex de la ligne droite:
1111111111111111111111111111111 (base 2)
=4294967296 (base 10) (=2^32-1 pour ceux qui ont étudié le binaire )
La décompression se fait de la même façon.
J'aurais souhaiter pouvoir convertir ce chiffre binaire en hexadécimal pour avoir une plus grande compression. En effet pour un caractère hexadecimale on peut stocker 4 pixels (alors que pour le décimale c'est 3.2). J'ai découvert plus tard que cette méthode de compression est souvent utilisé pour les images en noir et blanc comme... la calculatrice! En effet en travaillant sur les add-ins de la graph 85 j'ai trouvé qu'ils stockaient les icônes (et peut être même les pictures car elles ne prennent que 2096 bits) de cette manière.
Voilà pourquoi j'ai pû rapidement trouver le système d'encryptage des images sur les graph 85
Impressionant !
Comment as-tu fait pour travailler sur des add-ins g85 ? Tu as trouvé un décompilateur ?
Et puis j'ai pas compris tu peux pas stocker 32 "1" à la suite dans une variable, et tu en as besoin pour les passer en décimal, donc je comprends pas trop comment tu fais l'étape de conversion à la compression et la même à la décompression...
Si je comprends ça, j'ai ma petite idée sur l'accélération de la décompression (du moins je pense)
Planète Casio est un site communautaire non affilié à Casio. Toute reproduction de Planète Casio, même partielle, est interdite.
Les programmes et autres publications présentes sur Planète Casio restent la propriété de leurs auteurs et peuvent être soumis à des licences ou copyrights.
CASIO est une marque déposée par CASIO Computer Co., Ltd