π
<-

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

Unread postby 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: Select all
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 :)
User avatar
Lepzulnag
Niveau 9: IC (Compteur Infatigable)
Niveau 9: IC (Compteur Infatigable)
Level up: 78.5%
 
Posts: 151
Joined: 02 Aug 2012, 21:15
Location: Bretagne
Gender: Not specified
Calculator(s):
MyCalcs profile
Class: M2 Maths

Re: Création de Surfaces SDL 8-bits

Unread postby 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 wrote: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
User avatar
LevakAdmin
Niveau 14: CI (Calculateur de l'Infini)
Niveau 14: CI (Calculateur de l'Infini)
Level up: 98.9%
 
Posts: 6414
Images: 22
Joined: 27 Nov 2008, 00:00
Location: 0x1AACC355
Gender: Male
Calculator(s):
MyCalcs profile
Class: BAC+5: Epita (ING3)

Re: Création de Surfaces SDL 8-bits

Unread postby 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.
User avatar
Lepzulnag
Niveau 9: IC (Compteur Infatigable)
Niveau 9: IC (Compteur Infatigable)
Level up: 78.5%
 
Posts: 151
Joined: 02 Aug 2012, 21:15
Location: Bretagne
Gender: Not specified
Calculator(s):
MyCalcs profile
Class: M2 Maths

Re: Création de Surfaces SDL 8-bits

Unread postby 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.
User avatar
sarniq
Niveau 1: MD (Membre Débutant)
Niveau 1: MD (Membre Débutant)
Level up: 20%
 
Posts: 3
Joined: 07 Jan 2013, 23:14
Gender: Not specified
Calculator(s):
MyCalcs profile


Return to Problèmes divers / Aide débutants

Who is online

Users browsing this forum: ClaudeBot [spider] and 11 guests

-
Search
-
Social TI-Planet
-
Featured topics
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
-
Donations / Premium
For more contests, prizes, reviews, helping us pay the server and domains...
Donate
Discover the the advantages of a donor account !
JoinRejoignez the donors and/or premium!les donateurs et/ou premium !


Partner and ad
Notre partenaire Jarrety Calculatrices à acheter chez Calcuso
-
Stats.
1243 utilisateurs:
>1180 invités
>55 membres
>8 robots
Record simultané (sur 6 mois):
7582 utilisateurs (le 25/06/2025)
-
Other interesting websites
Texas Instruments Education
Global | France
 (English / Français)
Banque de programmes TI
ticalc.org
 (English)
La communauté TI-82
tout82.free.fr
 (Français)