Convertir du Ham8 en BMP ou autre

15 sujets de 1 à 15 (sur un total de 15)

  • thellier

      #272268

      Hello

      Suite à un fil sur english amiga board (sur le nombre de couleurs vraiment possibles dans une image ham8) je voudrais pouvoir convertir une très grosse image HAM8 vers du .BMP ou autre format non destructif pour ensuite compter les couleurs

      Un prog existe ? Amiga ou PC …

      Merci

      D’autre part dans ce meme fil on pretend que en mode modify les 2 bits faibles ne sont pas modifiés mais seuls les 6 bits forts
      Je n’y crois pas (cad je pense que les 6bits forts + 2 bits à 0 remplacent l’ancienne valeur ) et ne trouve pas de reference sur ce point du Ham8
      Que dis le hardware ref manual?

      Alain Thellier

      Edit:
      Le sujet complet
      http://eab.abime.net/showthread.php?t=84516&highlight=ham8

      Kaizen 35

        #272272

        il me semble que paintshop pro lisait du iff amiga. après HAM8, je ne sait pas… à tester ?

        ^^ ^^ ^^

        sayasupacrew

          #272276

          le top de la conversion, a mon sens.

          en version ouine ou tux,

          http://www.xnview.com/fr/

          https://www.youtube.com/@sayasupa

          IDNO530311

            #272285

            je confirme, Paint shop pro c’est très bien travailler avec l’IFF de l’amiga
            Tout du moins jusqu’à sa version 7 (celle que j’utilise)

            Admin

            bigdan

              #272298

              Thellier: intéressante ta question. Perso, j’essaierai avec ImageFX (sauvegarde en TIFF ou PNG) !

              Le nombre de couleurs dépends de l’image (entre 262 144 soit palette de 18bits RGB et 16 777 216 couleurs soit 24 bits RGB). Si je comprends bien, les 2 bits de poids faibles correspondent à la dernière modif de set (index dans une palette de 64 couleurs).. Une vrai bazar ces formats HAM6 – HAM8 de 1992 !

              https://www.ibm.com/developerworks/power/library/pa-spec16/

              IDNO53011: Paint Shop Pro sait très bien travailler… Je vérifie demain avec 2 ou 3 images HAM8 piquées sur Aminet !

              Mod

              Tcheko

                #272304

                Il n’est pas nécessaire de compter les couleurs pour savoir combien le mode HAM8 peut en afficher. Si la palette de base est bien choisie et si l’on fait usage de tricks avec la copper list en modifiant à la volée les couleurs de base en fonction de la position du raster, il est possible d’afficher plus de couleurs.

                Cette astuce était déjà possible en HAM6 avec le mode sliced HAM.

                D’autres sont allés plus loin et ont inventé le Dynamic HiRes capable d’afficher 4096 couleurs en haute résolution avec seulement une palette de 16 couleurs et sans les effets de frange du HAM6. Bon. moins de 10% de cpu disponible avec un 68000 cependant…

                Le mode HAM8 divise les octets en deux parties. Deux bits pour choisir le mode opératoire et 6 bits pour la valeur de l’opération.

                Il y a quatre opérations possibles :

                Hold : utilise la valeur pour afficher une couleur de base
                Modify : utilise la valeur pour altérer un des canons R, G ou B (3 opérations…).

                L’opération Modify altère les 6 bits de poids fort d’un des canons couleur du pixel précédent (soit le rouge, soit le bleu, soit le vert). Les deux bits de poids faible restent inchangés et sont issus de la couleur de la palette de base.

                Si l’on change la palette à l’aide d’une copper list (un changement de couleur tous les 8 pixels lowres), il est possible d’altérer une couleur de la palette tous les 8 pixels. Sur un écran en 320 pixels de large, c’est donc 40 changements de couleurs possibles par ligne.

                Il est donc possible d’afficher bien plus que les 262144 couleurs annoncées en faisant appel à la copper list pour modifier les couleurs à la volée lors de l’affichage.

                Il est évident qu’un simple programme qui transformerait une image HAM8 ordinaire trouvera à l’arrivée 262144 couleurs maximum (faut il encore que toute la palette soit présente dans l’image!).

                Le mode HAM est génial. C’est un décompresseur chromatique matériel qui permet d’afficher des milliers de couleurs avec une consommation mémoire ridicule. Son seul défaut est la légère perte de résolution horizontale, le fameux effet des couleurs qui bavent un peu…

                Anonyme

                  #272305

                  Merci pour cette super explication j’adore !

                  Kaizen 35

                    #272306

                    cool cette explication 🙂

                    ^^ ^^ ^^

                    cyb0rg

                      #272307

                      J’ai toujours trouvé le mode HAM dégueulasse … Comme un bon vieux jpeg trop compressé…

                      Only amiga makes it possible
                      XTR Games
                      Magic Productions
                      tilde

                      thellier

                        #272308

                        @all
                        Effectivement xnview marche très bien pour le HAM8
                        Merci


                        @Tcheko

                        C’est une bonne explication du HAM & co
                        Mais à mon avis tout ce qui change la palette est hors sujet car ce qui m’importe c’est combien un fichier iff ham8 peut vraiment préserver de couleurs comme « conteneur »
                        Trop étendre le concept de palette ce serait aller vers le fait qu’un écran en 1 couleur (sans bitmaps juste la couleur de fond) pourrait par programme afficher 4096 couleurs par ex (copper list)

                        Ensuite je répéte ce que j’ai écrit sur English Amiga Board ici:

                        > 262144 […] le nombre qui est le plus pertinent.

                        En fait, il y a 256 valeurs possibles pour chaque canal R, G ou B (cad toute les valeurs entre 0 et 255)

                        Voyons le HAM8:
                        Parmi celles ci 64 peuvent être obtenues en mode modification (Modify) de pixel (tel que 0 4 8 12 16 etc …)
                        Mais aussi la palette peut être définie pour utiliser 64 autres valeurs (comme 1 2 3 5 6 7 9 etc …)
                        celles-ci peuvent être obtenues lorsqu’on prend (Hold) une couleur de pixel depuis la palette

                        Donc, le total des valeurs possibles est de 64 + 64 valeurs pour chaque canal R, G ou B
                        Donc, 128 * 128 * 128 = 2097152 = 2 millions de couleurs non 16 comme dit souvent …

                        pandy71:
                        > Est-ce pas mieux définir le problème de dire que les 2 bits de poids faibles ne viennet que de la palette

                        Non, parce que vous pouvez accéder à seulement 64 couleurs de la palette en HAM8 de sorte que vous ne pouvez pas récupérer toutes les valeurs de POSSIBLES de 0 à 255, mais seulement 64 parmi elles

                        > 2 + 2 + 2 = 6 bits et 6 + 6 + 6 = 18; 6 + 18 = 24.
                        Cette formule laisse supposer que si on prend (Hold) une couleur de la palette (donc avec 8 bits de précision) dans un pixel, vous pouvez modifier dans le prochain pixel SEULEMENT les 6 bits de poids forts pour (par exemple) le canal rouge: mais ce n’est pas le cas car il REMPLACE le canal rouge (par exemple) de sorte que vous perdez les 2 bits de poids faibles

                        Note: Il y a un débat sur ces fameux 2 bits de poids faibles. Wikipedia dit comme Tcheko mais je préferai une référence comme le hardware reference manual

                        Jack Burton:
                        >j’ai fait un test sur ImageFX 2.6 avec une image représentant la palette de couleurs 24bit. en 4096×4096 pixels

                        J’ai essayé avec votre image comme exemple en utilisant mon propre programme de DatatypeToHam
                        (dans WinUAE avec beaucoup de ram)

                        DatatypeToHam 144 Full_24bit_RGB_palette.png 4096 4096

                        J’ai obtenu un fichier iff ham8 mais trop grand pour tout amiga classique (mais pour info il charge sur une Sam460 + OS4.1fe)

                        Puis j’ai chargé dans XnView pour PC (qui a un beau support du chargement HAM8 ) ==> 258304 couleurs
                        PaintShopPro donne même résultat une fois converti en BMP

                        Donc, le message est: DatatypeToHam peut générer une VRAIE image 258304 couleurs en HAM8

                        🙂

                        Alain Thellier

                        thellier

                          #272311

                          Note: DatatypeToHam n’a pas brisé ici la limite des 262144 couleurs car justement il prend pas en compte une palette avec des 2 bits de poids faibles
                          Faudra que je l’update un peu…

                          Alain

                          Mod

                          Tcheko

                            #272330

                            Si l’on part du principe que l’on ne dispose que d’une couleur dans la palette, celle ci peut être changée de 64 différentes manières pour chaque canon.

                            Ainsi, 64(R) x 64(G) x 64(B) ou alors 262144 combinaisons possibles et cela à partir d’une seule couleur dans la palette.

                            La palette peut contenir 64 couleurs différentes ce qui est largement suffisant pour adresser les 2 bits de poids faible ‘manquants’ pour atteindre les 8 bits de précision par canon.

                            Afin d’atteindre les 2^24 couleurs (16 millions et des briquettes), il nous faut :

                            4 couleurs pour chaque canon R, G et B avec des valeurs pour les bits de poids faible : 00, 01, 10 et enfin 11. Peu importe la valeur des bits de poids fort pour ces couleurs puisqu’ils sont altérables avec l’opération Modify. Cependant pour simplifier, considérons que les 6 bits de poids fort sont tous à zéro pour l’ensemble des couleurs.

                            Donc, 4 couleurs par canon et il y a 3 canons soit 8 combinaisons possibles entre R, G, et B

                            Couleur 0: R00, G00, B00

                            Rouge pur
                            Couleur 1: R01, G00, B00
                            Couleur 2: R10, G00, B00
                            Couleur 3: R11, G00, B00

                            Vert pur
                            Couleur 4: R00, G01, B00
                            Couleur 5: R00, G10, B00
                            Couleur 6: R00, G11, B00

                            Bleu pur
                            Couleur 7: R00, G00, B01
                            Couleur 8: R00, G00, B10
                            Couleur 9: R00, G00, B11

                            Jaune
                            Couleur 10: R01, G01, B00
                            Couleur 11: R01, G10, B00
                            Couleur 12: R01, G11, B00

                            Couleur 13: R10, G01, B00
                            Couleur 14: R10, G10, B00
                            Couleur 15: R10, G11, B00

                            Couleur 16: R11, G01, B00
                            Couleur 17: R11, G10, B00
                            Couleur 18: R11, G11, B00

                            Violet
                            Couleur 19: R01, G00, B01
                            Couleur 20: R01, G00, B10
                            Couleur 21: R01, G00, B11

                            Couleur 22: R10, G00, B01
                            Couleur 23: R10, G00, B10
                            Couleur 24: R10, G00, B11

                            Couleur 25: R11, G00, B01
                            Couleur 26: R11, G00, B10
                            Couleur 27: R11, G00, B11

                            Bleu ciel
                            Couleur 28: R00, G01, B01
                            Couleur 29: R00, G01, B10
                            Couleur 30: R00, G01, B11

                            Couleur 31: R00, G10, B01
                            Couleur 32: R00, G10, B10
                            Couleur 33: R00, G10, B11

                            Couleur 34: R00, G11, B01
                            Couleur 35: R00, G11, B10
                            Couleur 36: R00, G11, B11

                            Gris
                            Couleur 37: R01, G01, B01
                            Couleur 38: R10, G10, B10
                            Couleur 39: R11, G11, B11

                            Et le reste des combinaisons possibles :
                            Couleur 40: R01, G01, B10
                            Couleur 41: R01, G01, B11
                            Couleur 42: R01, G10, B01
                            Couleur 43: R01, G10, B10
                            Couleur 44: R01, G10, B11
                            Couleur 45: R01, G11, B01
                            Couleur 46: R01, G11, B10
                            Couleur 47: R01, G11, B11

                            Couleur 48: R10, G01, B01
                            Couleur 49: R10, G01, B10
                            Couleur 50: R10, G01, B11
                            Couleur 51: R10, G10, B01
                            Couleur 52: R10, G10, B11
                            Couleur 53: R10, G11, B01
                            Couleur 54: R10, G11, B10
                            Couleur 55: R10, G11, B11

                            Et enfin…

                            Couleur 56: R11, G01, B01
                            Couleur 57: R11, G01, B10
                            Couleur 58: R11, G01, B11
                            Couleur 59: R11, G10, B01
                            Couleur 60: R11, G10, B10
                            Couleur 61: R11, G10, B11
                            Couleur 62: R11, G11, B01
                            Couleur 63: R11, G11, B10

                            Donc. En choisissant convenablement la palette des 64 couleurs du mode HAM8, il est techniquement possible d’accéder au 16 millions de couleurs…

                            En partant de ce principe, il est possible de fabriquer une image avec toutes les couleurs simplement :

                            Premier octet : 00 000001 – couleur n°1 R0x00 G0x00 B0x00
                            Second octet : 01 000000 – Modify canon R
                            Troisième octet : 01 000001 – Modify canon R (R0x030, G0x00, B0x00)
                            Quatrième octet : 01 000010 – Modify canon R (R0x040, G0x00, B0x00)

                            65eme octet : 01 111111 – Modify canon R (R0xFC, G0x00, B0x00)

                            Pour aller chercher les autres bits de poids faible, changer la couleur de départ :
                            Premier octet : 00 000002 – couleur n°1 R0x01 G0x00 B0x00
                            Second octet : 01 000000 – Modify canon R
                            Troisième octet : 01 000001 – Modify canon R (R0x031, G0x00, B0x00)

                            65eme octet : 01 111111 – Modify canon R (R0xFD, G0x00, B0x00)

                            etc…

                            Seul hic. La taille de l’image qui doit pour pouvoir être composée des 16 millions de couleurs avoir autant de pixels soit 4096 x 4096.

                            Il ne doit pas être bien compliqué d’écrire un bout de code pour fabriquer une telle image. 🙂

                            PS: notons que 64 couleurs x 64(R) x 64(G) x 64(B) = 2^24… mais il fallait faire la démonstration des bits de poids faibles pour comprendre comment accéder à toutes les couleurs.

                            PS2: Correction de la couleur n°63…

                            Kaizen 35

                              #272332

                              petit hors sujet :

                              Tcheko et Thellier, c’est quoi vos métiers si ce n’est pas trop indiscret ?

                              car là, vous m’épatez… O_O

                              ^^ ^^ ^^

                              thellier

                                #272339

                                @Tcheko
                                Ton raisonnement ne tiens que si les 2 bits de poids faibles venant de la palette ne sont jamais affecté par les « Modify » suivants du R,G ou B
                                C’est justement ce point qui est litigieux : si tu as une source (hors wikipedia) qui le confirme alors donne la

                                >pouvoir être composée des 16 millions de couleurs avoir autant de pixels soit 4096 x 4096
                                En fait si certaines couleurs ne sont « atteignables » qu’en modifiant plusieurs pixels de suite (max 4) il vaudrait mieux prevoir 4*4096*4096 pour être tranquille = ouups


                                @kaizen35

                                Je suis support informatique chez Orange j’aide des personnes d’Orange à faire des requêtes sur diverses applis qui mesurent le trafic sur le réseau = bof bof
                                Mais surtout j’ai eu mon premier Amiga dès 1988 🙂

                                Mod

                                Tcheko

                                  #272343

                                  @thellier
                                  Les bits de poids faible ne sont pas affectés par le modify.

                                  Extrait de la documentation AGA.guide de l’archive ASM-One :

                                  The old 6 bitplane HAM mode, unlike before, works in HIRES and SHRES
                                  resolutions.

                                  As before bitplanes 5 and 6 control it

                                  s function as follows:

                                  +—–+—–+——–+——–+——————+
                                  | BP6 | BP5 | RED | GREEN | BLUE |
                                  +—–+—–+——–+——–+——————+
                                  | 0 | 0 | select new base register (1 of 16) |
                                  +—–+—–+——–+——–+——————+
                                  | 0 | 1 | hold | hold | modify |
                                  +—–+—–+——–+——–+——————+
                                  | 1 | 0 | modify | hold | hold |
                                  +—–+—–+——–+——–+——————+
                                  | 1 | 1 | hold | modify | hold |
                                  +—–+—–+——–+——–+——————+

                                  There is a new 8 bitplane HAM (Hold and Modify) mode. This mode is invoked
                                  when BPU field in @{« BPLCON0 » link BPLCON0} is set to 8 , and HAMEN is set. Bitplanes 1 and 2
                                  are used as control bits analagous to the function of bitplanes 5 and 6 in
                                  6 bitplane HAM mode:

                                  +—–+—–+——–+——–+——————+
                                  | BP2 | BP1 | RED | GREEN | BLUE |
                                  +—–+—–+——–+——–+——————+
                                  | 0 | 1 | select new base register (1 of 64) |
                                  +—–+—–+——–+——–+——————+
                                  | 0 | 1 | hold | hold | modify |
                                  +—–+—–+——–+——–+——————+
                                  | 1 | 0 | modify | hold | hold |
                                  +—–+—–+——–+——–+——————+
                                  | 1 | 1 | hold | modify | hold |
                                  +—–+—–+——–+——–+——————+

                                  Since only 6 bitplanes are available for modify data, the data is placed in
                                  6 MSB. The 2 LSB are left unmodified, which allows creation of all
                                  16,777,216 colors simultaneously, assuming one had a large enough screen
                                  and picked one`s base registers judiciously. This HAM mode also works in
                                  HIRES and SHRES modes.

                                  Pour atteindre toutes les couleurs, il n’est pas nécessaire d’avoir plus de 4096 x 4096 pixels. Il suffit pour cela d’arranger les ordres convenablement. Je n’ai pas réfléchis à la façon d’arranger toutes les instructions mais il y a forcément une combinaison ‘magique’. La première qui me vient à l’esprit est de faire une image de 64 pixels de haut avec comme départ les 64 couleurs de base sur chaque ligne… et 262144 pixels de largeur. Haha.


                                  @kaizen35
                                  : développeur indépendant.

                                15 sujets de 1 à 15 (sur un total de 15)

                                • Vous devez être connecté pour répondre à ce sujet.

                                Forums AmigaOS, MorphOS et AROS Général Convertir du Ham8 en BMP ou autre

                                Amiga Impact