Les membres ayant 30 points peuvent parler sur les canaux annonces, projets et hs du chat.
La shoutbox n'est pas chargée par défaut pour des raisons de performances. Cliquez pour charger.

Forum Casio - Projets de programmation


Index du Forum » Projets de programmation » The limg project : Les images avec des couleurs rgb565
Mb88 Hors ligne Rédacteur Points: 1211 Défis: 3 Message

The limg project : Les images avec des couleurs rgb565

Posté le 25/02/2023 00:17

The limg project est un ensemble d'outils autour d'un format d'images que j'ai conçu après avoir vu https://www.planet-casio.com/Fr/forums/topic17052-1-uwo-un-format-bitmap-comme-les-autres.html . Son fonctionnement le rend très utile sur la G90+e.

>> Repo. Github <<
>> Téléchargement de l'éditeur <<

Tutoriel d'utilisation de l'éditeur :


Ancienne description
Cliquer pour enrouler
J'ai fait un petit format d'image très bien pour nos G90+e, après avoir vu https://www.planet-casio.com/Fr/forums/topic17052-1-uwo-un-format-bitmap-comme-les-autres.html .

Mon format a des avantages par rapport à d'autres formats d'images :
* les couleurs sont enregistrés en rgb565 donc il y a une légère perte, mais qui n'est pas vraiment visible à l’œil nu. De plus, l'écran de la G90+e fonctionne avec des couleurs rgb565, ce sera donc très bien de l'utiliser sur cette calculatrice.
* une petite astuce permet de réduire la taille :
-> les couleurs sont mises dans une palette si l'image contient jusqu'à 256 couleurs, et les pixels prennent que 1 octet
-> s'il y a plus que 256 couleurs dans l'image, chaque pixel prend 2 octets

J'ai codé des convertisseurs que vous pouvez trouver sur GitHub :
https://github.com/mibi88/limg

J'ai prévu de bientôt coder une petite lib. en C pour récupérer un array de couleurs et les dimensions de l'image à partir d'un fichier.

Une vidéo assez récente de l'éditeur (le mini bug à la fin a été corrigé depuis) :



1, 2 Suivante
Mb88 Hors ligne Rédacteur Points: 1211 Défis: 3 Message
Lephenixnoir En ligne Administrateur Points: 24574 Défis: 170 Message

Citer : Posté le 25/02/2023 20:32 | #


Pas mal ! L'idée de stocker les couleurs en RGB565 est propre. La majorité des formats le propose (BMP, PNG, le format de gint par exemple) mais il y a certainement moyen de gagner encore en taille avec un million de façon de compresser. Tu as des idées de comment tu vas utiliser ça sur la calto ? Ou peut-être sur le PC ?
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Mb88 Hors ligne Rédacteur Points: 1211 Défis: 3 Message

Citer : Posté le 25/02/2023 21:54 | #


Moi j'ai prévu de faire un espèce de paint pour la G90+e avec enregistrement en limg et export bmp (et peut-être import). Sur PC il y a déjà les convertisseurs assez faciles à utiliser (si tu leur donnes aucun argument, ils vont t'afficher comment les utiliser), et sinon je vais peut être coder une visionneuse en C avec la SDL 1.2 ou une autre librairie si je trouve mieux XD.

Pour la compression, je ne sais pas trop, car je ne veux pas qu'elle prenne trop de temps ou sacrifie trop de RAM. Si je fais un format limg avec compression en tout cas ce sera de la compression lossless.

J'ai commencé à m'imaginer un logo pour le format mais je ne suis pas encore sûr de ce que je fais. J'ai déjà essayé un chat noir en haut d'un dessin, et un pingouin qui boit de la limonade sur un iceberg. J'ai fait ces icons en pixel art. Le truc c'est que le pingouin ça fait trop penser à tux et le char noir c'était moche et sinon j'avais aussi l'idée de faire un logo avec une plume car pour des images sans compression elles sont assez légères.

EDIT :

Le l de limg peut faire penser à lightweight ou little et ça c'est bien. En fait je ne sais même pas moi-même pour quoi j'ai mis un l, mais au final c'était bien !
Kikoodx Hors ligne Ancien labélisateur Points: 3039 Défis: 11 Message

Citer : Posté le 26/02/2023 01:26 | #


Cool comme projet, beau travail !

Il y a une petite typo dans la spec du README GitHub assez importante à faire remarquer, tu as noté qu'une couleur uint16_t de la palette prend trois octets, hors tu précises ici que c'est deux octets.
ouais ouais
Mb88 Hors ligne Rédacteur Points: 1211 Défis: 3 Message

Citer : Posté le 26/02/2023 11:37 | #


Ah oui, c'est parce qu'elle prenait 3 octets dans mon brouillon, et j'avais oublié de le corriger lorsque j'ai changé ça.

EDIT :

C'est corrigé !
Mb88 Hors ligne Rédacteur Points: 1211 Défis: 3 Message

Citer : Posté le 26/02/2023 16:21 | #


J'ai fait une petite lib en C pour décoder et encoder des images limg. Une démo est dans demo/ et la lib dans liblimg/.
Mb88 Hors ligne Rédacteur Points: 1211 Défis: 3 Message
Mb88 Hors ligne Rédacteur Points: 1211 Défis: 3 Message

Citer : Posté le 02/03/2023 15:33 | #


J'ai ajouté une fonction pour créer une image vide, comme ça je vais pouvoir commencer à coder un éditeur.
Mb88 Hors ligne Rédacteur Points: 1211 Défis: 3 Message

Citer : Posté le 03/03/2023 19:25 | #


J'ai remis de l'ordre dans la repo. github car c'était un peu le bazar parce que je ne veux pas créer plein de repos pour chaque bout de code, mais là c'est déjà plus structuré, et on comprend mieux à quoi sert ce que chaque dossier contient.
Mb88 Hors ligne Rédacteur Points: 1211 Défis: 3 Message
Mb88 Hors ligne Rédacteur Points: 1211 Défis: 3 Message

Citer : Posté le 05/03/2023 19:20 | # | Fichier joint


L'éditeur est maintenant fonctionnel, mais beaucoup est temporaire.

Une vidéo :



Bon, le smiley est absolument affreux mais l'éditeur est tellement dur à utiliser ... j'avais la flemme de faire mieux
Mb88 Hors ligne Rédacteur Points: 1211 Défis: 3 Message

Citer : Posté le 09/03/2023 08:26 | #


Hier, j'ai mis de l'ordre dans le code de l'éditeur, et je charge déjà le font en ram : il ne me reste plus qu'à faire la fonction pour afficher du texte.
Mb88 Hors ligne Rédacteur Points: 1211 Défis: 3 Message

Citer : Posté le 09/03/2023 22:16 | #


J'ai amélioré le popup de sélection de couleur, ajouté un menu et un moyen de ralentir le curseur.
Je posterai une vidéo demain pour montrer tout ça.
Mb88 Hors ligne Rédacteur Points: 1211 Défis: 3 Message
Lephenixnoir En ligne Administrateur Points: 24574 Défis: 170 Message

Citer : Posté le 11/03/2023 07:57 | #


Hello ! Joli effort tout ça, pas mal du tout. Tu demandais sur le chat ce qu'on en pense ; en fait je ne suis pas sûr personnellement parce que ça va dépendre de ce que tu veux en faire. En tant qu'éditeur d'images sur le PC, c'est totalement un bon exercice et une expérience intéressante pour toi de le programmer, mais il faut reconnaître qu'éditer des images avec un logiciel plus standard (Gimp, Aseprite, Photoshop...) serait plus efficace. C'est assez frustrant (surtout pour les gens comme moi qui aiment bien réinventer la roue) mais on bat rarement ce qui existe déjà ; c'est aussi pour ça que j'ai abandonné à une époque de faire une GUI pour le fxSDK, aujourd'hui c'est mieux de coller les commandes de compilation dans VSCode... :/

Pour la calto c'est bien plus intéressant, à mon humble avis : déjà il n'y a pas beaucoup voire du tout d'éditeurs d'images on-calc, et ensuite il y a des questions très intéressantes d'ergonomie à se poser, genre comment tout faire avec le clavier. Comme on a beaucoup de touches moi j'ai vite envie de poser des questions du genre comment tu rends le dessin efficace en exploitant le maximum de touches d'une façon qui reste intuitive.

Une autre question qui m'intéresse c'est quel usage tu imagines pour le logiciel ? Si c'est pour dessiner sur la calto, comment est-ce qu'on utilise les images ensuite ? Est-ce que c'est pour les charger par un add-in depuis la mémoire de stockage ? Est-ce que c'est pour les lire dans un afficheur d'images ? Généralement quand on fait des outils sur calto c'est pour permettre aux utilisateurs de faire une certaine action (eg. développer un programme) entièrement sur la calto et du coup y'a plein de questions intéressantes sur comment ton outil s'intègre dans le processus.

Bref, c'est très méta tout ça mais voilà ce que ça m'inspire
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Mb88 Hors ligne Rédacteur Points: 1211 Défis: 3 Message

Citer : Posté le 11/03/2023 11:16 | #


Déjà, le but n'est pas d'éditer des images, mais de faire du pixel art. Les limg, grâce à liblimg, peuvent être utilisés dans le futur dans les add-ins pour changer les graphismes par exemple, en sachant qu'ils ont l'air plus petits que les bitmaps normaux. Le logiciel sera après aussi disponible on-calc, et il utilise peu de touches et est donc assez facile à prendre en main :
- X colorer un pixel.
- C aller dans le menu.
- V ouvrir le popup de sélection de couleur.
- ˂˃˄˅ Bouger le curseur.

Pour le compiler :
$ git clone --recurse-submodules https://github.com/mibi88/limg.git limg20230310
$ cd limg20230310/limgeditor
$ make

Pour modifier un fichier existant :
$ ./limgedit o <out file> <in file>

Pour créer un nouveau fichier :
$ ./limgedit n <out file> <width> <height>


Ah oui, et merci pour le retour !
Mb88 Hors ligne Rédacteur Points: 1211 Défis: 3 Message

Citer : Posté le 14/03/2023 21:58 | #


Bon, le plus gros de l'éditeur est codé, il est entièrement fonctionnel, mais le code est crade et j'ai commencé à le nettoyer.
J'uploaderai une vidéo bientôt
Mb88 Hors ligne Rédacteur Points: 1211 Défis: 3 Message

Citer : Posté le 16/03/2023 20:56 | #


Bon, la vidéo ça reste encore pour bientôt, mais le code est déjà amélioré en terme de lisibilité (mais moins optimisé maintenant).

N'hésitez pas à tester !

https://github.com/mibi88/limg
Mb88 Hors ligne Rédacteur Points: 1211 Défis: 3 Message
Mb88 Hors ligne Rédacteur Points: 1211 Défis: 3 Message
1, 2 Suivante

LienAjouter une imageAjouter une vidéoAjouter un lien vers un profilAjouter du codeCiterAjouter un spoiler(texte affichable/masquable par un clic)Ajouter une barre de progressionItaliqueGrasSoulignéAfficher du texte barréCentréJustifiéPlus petitPlus grandPlus de smileys !
Cliquez pour épingler Cliquez pour détacher Cliquez pour fermer
Alignement de l'image: Redimensionnement de l'image (en pixel):
Afficher la liste des membres
:bow: :cool: :good: :love: ^^
:omg: :fusil: :aie: :argh: :mdr:
:boulet2: :thx: :champ: :whistle: :bounce:
valider
 :)  ;)  :D  :p
 :lol:  8)  :(  :@
 0_0  :oops:  :grr:  :E
 :O  :sry:  :mmm:  :waza:
 :'(  :here:  ^^  >:)

Σ π θ ± α β γ δ Δ σ λ
Veuillez donner la réponse en chiffre
Vous devez activer le Javascript dans votre navigateur pour pouvoir valider ce formulaire.

Si vous n'avez pas volontairement désactivé cette fonctionnalité de votre navigateur, il s'agit probablement d'un bug : contactez l'équipe de Planète Casio.

Planète Casio v4.3 © créé par Neuronix et Muelsaco 2004 - 2024 | Il y a 162 connectés | Nous contacter | Qui sommes-nous ? | Licences et remerciements

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