Térence Utilisateur confirmé: Rang *****
Messages : 2213 Localisation : Oui
| Sujet: img2str Jeu 8 Nov 2012 - 13:11 | |
| Bonjour, Je m'ennuyais un peu ce matin alors j'ai (encore) fait un script légèrement inutile Le script converti une image en un texte hexadécimal, qu'il écrit ensuite dans un fichier. Voici le script : - Code:
-
/* * img2str(sprite img) * transforme une image en string */
posX=0; // position en X du sprite posY=0; // position en Y du sprite img=argument0; w=sprite_get_width(img); h=sprite_get_height(img); result=""; global.etape=0; global.nb_etapes=h*w;
for(i=0;i<h;i+=1) { for(j=0;j<w;j+=1) { value=dec2hexa(draw_getpixel(posX+j,posY+i),16); result+=string(value)+""; global.etape+=1; screen_redraw(); } result+="#"; } return result; L'image doit être affichée, modifiez posX et posY si nécessaire. Il faut aussi la fonction dec2hexa (c'est Onilink qui l'a écrit, je l'ai retrouvé je sais pas où dans cette section) : - Code:
-
value = argument0 sret = "" while(value >= argument1) { sret = string_insert( string_copy("0123456789ABCDEF", value mod argument1 + 1, 1) , sret, 0) value = value div argument1 } return string_insert( string_copy("0123456789ABCDEF", value + 1, 1) , sret, 0) Vous pouvez télécharger un executable qui vous permettra de tester avec n'importe quel jpg (par contre c'est vraiment très long donc prenez de petites images et ne vous découragez pas en regardant la barre de chargement ). Appuyez sur n'importe quelle touche pour choisir une image. Ca peut faire de beaux effets spéciaux pour un jeu du genre Matrix, sinon c'est complètement inutile |
|
M@d_Doc Modérateur
Messages : 6600 Localisation : 47°44'8.04 Projet Actuel : aucun
| Sujet: Re: img2str Jeu 8 Nov 2012 - 14:30 | |
| Le truc qui ralentit tout, c'est le draw_getpixel() qui est une fonction honteusement lente. Si tu veux essayer d'améliorer la vitesse, tu peux voir pour: enregistrer l'image en bmp sur le disque lire le fichier bmp, le convertir en string https://cbna.forumactif.com/t11227-lire-un-fichier-bmp_________________ Tous les icones de gm utilisables sur le cbna ICI |
|
Térence Utilisateur confirmé: Rang *****
Messages : 2213 Localisation : Oui
| Sujet: Re: img2str Jeu 8 Nov 2012 - 14:38 | |
| Oui, je me doutais bien qu c'était cette fonction qui ralentissait tout, près d'une minute pour une image de 100px de côté... En tous cas merci du lien, mais j'ai la flemme de modifier mon truc |
|
onilink_ Modérateur
Messages : 9180 Localisation : Montpellier Projet Actuel : Planet Centauri
OniDev
| Sujet: Re: img2str Jeu 8 Nov 2012 - 17:36 | |
| Tu devrait plutôt faire un convertisseur en base 64, ça ferais un texte en sorti bien plus léger :b |
|
Térence Utilisateur confirmé: Rang *****
Messages : 2213 Localisation : Oui
| Sujet: Re: img2str Jeu 8 Nov 2012 - 17:41 | |
| Ouais, en plus je viens de me rendre compte que pour chaque pixel, il écrit toute la couleur en hexa, soit 3 caractères.... Je le modifierait quand j'aurais le temps et l'envie |
|
onilink_ Modérateur
Messages : 9180 Localisation : Montpellier Projet Actuel : Planet Centauri
OniDev
| Sujet: Re: img2str Jeu 8 Nov 2012 - 18:17 | |
| Normalement ce serais plutôt 6 caractères par pixels :b |
|
Térence Utilisateur confirmé: Rang *****
Messages : 2213 Localisation : Oui
| Sujet: Re: img2str Jeu 8 Nov 2012 - 18:19 | |
| Euh oui autant pour moi.... je sais même plus compter maintenant... |
|