π
<-

Création de Surfaces SDL 8-bits

:32tins: :32tinsktpb: :32tinsktpn: :32tinscas: :32tinstpkc: :32tinstpktpb: :32tinstp: :32tinscastp: :32tinscmc: :32tinscx: :32tinscxcas:

Création de Surfaces SDL 8-bits

Message non lude Lepzulnag » 06 Jan 2013, 16:08

Bonjour :) ,

j'ai un problème lors de la sauvegarde d'image à l'aide de la SDL sur les calculettes en niveaux de gris : l'image n'est pas enregistrée et est entièrement noire. :(

Pour enregistrer une image à l'aide de la SDL j'utilise ce code :

Code: Tout sélectionner
saveImage = SDL_CreateRGBSurface(SDL_SWSURFACE, area.w, area.h, is_cx? 16:8, 0, 0, 0, 0);
SDL_BlitSurface(scr, &area, saveImage, NULL);


Je créé ma surface puis je la remplis avec mon image, c'est cela l'idée.
Sur CX cela marche bien(les pixels sont enregistrés en 16 bits), mais pas sur les non-CX où il n'y a que 8 bits par pixel.

Je suis allé voir la documentation de la SDL sur la fonction SDL_CreateRGBSurface : http://sdl.beuc.net/sdl.wiki/SDL_CreateRGBSurface mais je n'ai malheureusement pas tout compris.

If bitsPerPixel is 8 an empty palette is allocated for the surface, otherwise a 'packed-pixel' SDL_PixelFormat is created using the [RGBA]mask's provided


Cette phrase en particulier. Je ne la comprends vraiment pas et j'ai l'impression qu'elle est la solution à mon problème. Si quelqu'un qui a de l'expérience dans la gestion d'image saurait m'expliquer, cela m'aiderait beaucoup :)
Avatar de l’utilisateur
Lepzulnag
Niveau 9: IC (Compteur Infatigable)
Niveau 9: IC (Compteur Infatigable)
Prochain niv.: 78.5%
 
Messages: 151
Inscription: 02 Aoû 2012, 21:15
Localisation: Bretagne
Genre: Non spécifié
Calculatrice(s):
MyCalcs profile
Classe: M2 Maths

Re: Création de Surfaces SDL 8-bits

Message non lude Levak » 06 Jan 2013, 17:50

Humm, ça me fait penser à un problème que j'ai déjà eu avec un portage de SDL en OCAML :
http://webcache.googleusercontent.com/s ... ent=ubuntu

Levak a écrit:Bon, je rectifie définitivement le problème.

Le vrai problème n'est pas put_pixel[_color] ni même get_pixel[_color], car isolément ils fonctionnent sur une surface venant d'un Sdlloader.load_image.

Il semblerait que le problème vienne de ça :
Code :
let dst = Sdlvideo.create_RGB_surface_format src [] x y in

En effet, le src est l'image en niveau de gris a une profondeur de 256 contre 1546. Là create_RGB_surface_format va récupérer directement le format de pixel depuis src (d'ailleurs je ne sais pas ce qu'il récupère pour pouvoir jongler sans). Et là les manipulations en get_pixel[_color] et put_pixel[_color] ne fonctionnent plus. en fait aucune opération sur les pixels ne fonctionne, lorsque l'image est en niveaux de gris.
Alors que si la surface provient de Sdlloader.load_image tout fonctionne.

Ptet qu'un blit_surface fonctionnerait mieux ...
Responsable design/graphique de TI-Planet
I do not get mad at people, I just want them to learn the way I learnt.
ImageTNOC [topic][DL]
nClock [topic][DL]
HideManager [topic][DL]
ZLock [topic][DL]
Theme Editor [topic][DL]
Mes programmes
Avatar de l’utilisateur
LevakAdmin
Niveau 14: CI (Calculateur de l'Infini)
Niveau 14: CI (Calculateur de l'Infini)
Prochain niv.: 98.9%
 
Messages: 6414
Images: 22
Inscription: 27 Nov 2008, 00:00
Localisation: 0x1AACC355
Genre: Homme
Calculatrice(s):
MyCalcs profile
Classe: BAC+5: Epita (ING3)

Re: Création de Surfaces SDL 8-bits

Message non lude Lepzulnag » 06 Jan 2013, 18:21

Oui en effet, le problème semble être le même !
Lorsque l'on créé une image en niveaux de gris avec SdlVideo.create_RGB_surface_format ou son équivalent SDL_CreateRGBSurface, aucune opération ne marche sur cette surface ainsi créée.
Avatar de l’utilisateur
Lepzulnag
Niveau 9: IC (Compteur Infatigable)
Niveau 9: IC (Compteur Infatigable)
Prochain niv.: 78.5%
 
Messages: 151
Inscription: 02 Aoû 2012, 21:15
Localisation: Bretagne
Genre: Non spécifié
Calculatrice(s):
MyCalcs profile
Classe: M2 Maths

Re: Création de Surfaces SDL 8-bits

Message non lude sarniq » 16 Jan 2013, 19:22

If bitsPerPixel is 8 an empty palette is allocated for the surface

Et donc tu dois definir le palette toi-meme a l'aide de SDL_SetColors().
Regarde la doc.
Un simple SDL_SetColors(surface, screen->format->palette->colors, 0, screen->format->palette->ncolors) devrait suffire.
Avatar de l’utilisateur
sarniq
Niveau 1: MD (Membre Débutant)
Niveau 1: MD (Membre Débutant)
Prochain niv.: 20%
 
Messages: 3
Inscription: 07 Jan 2013, 23:14
Genre: Non spécifié
Calculatrice(s):
MyCalcs profile


Retourner vers Problèmes divers / Aide débutants

Qui est en ligne

Utilisateurs parcourant ce forum: ClaudeBot [spider] et 12 invités

-
Rechercher
-
Social TI-Planet
-
Sujets à la une
Comparaisons des meilleurs prix pour acheter sa calculatrice !
"1 calculatrice pour tous", le programme solidaire de Texas Instruments. Reçois gratuitement et sans aucune obligation d'achat, 5 calculatrices couleur programmables en Python à donner aux élèves les plus nécessiteux de ton lycée. Tu peux recevoir au choix 5 TI-82 Advanced Edition Python ou bien 5 TI-83 Premium CE Edition Python.
Enseignant(e), reçois gratuitement 1 exemplaire de test de la TI-82 Advanced Edition Python. À demander d'ici le 31 décembre 2024.
Aidez la communauté à documenter les révisions matérielles en listant vos calculatrices graphiques !
1234
-
Faire un don / Premium
Pour plus de concours, de lots, de tests, nous aider à payer le serveur et les domaines...
Faire un don
Découvrez les avantages d'un compte donateur !
JoinRejoignez the donors and/or premium!les donateurs et/ou premium !


Partenaires et pub
Notre partenaire Jarrety Calculatrices à acheter chez Calcuso
-
Stats.
2159 utilisateurs:
>2134 invités
>19 membres
>6 robots
Record simultané (sur 6 mois):
29271 utilisateurs (le 11/07/2025)
-
Autres sites intéressants
Texas Instruments Education
Global | France
 (English / Français)
Banque de programmes TI
ticalc.org
 (English)
La communauté TI-82
tout82.free.fr
 (Français)