CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

[HS] travaux d'images

-MasterLink-
-MasterLink-
Niveau 6
17 octobre 2007 à 18:06:59

Salut

Ce que je poste est plus ou moins HS sur ce forum, mais comme je pense que je pourrait eventuellement avoir des réponses je tente quand meme.

En fait je cherche une librairie C me permettant de manipuler des images.
Je m´explique : ce que je cherche a faire n´est pas bien compliqué, juste créer une "image de fond" (blanche), coller différentes images externes par dessus, et enfin sauvegarder le tout sur un nom prédéfini.

Donc si quelqu´un saurait vers quoi m´orienter, ce serait sympa

Merci

naruto_forever
naruto_forever
Niveau 10
17 octobre 2007 à 18:14:19

Je pense que t´es pas si HS que ça, vu que ça pourrait servir pour faire un jeu ( le forum programmation aurait été bien aussi :-))) )
Soit, je vais te citer SDL, qui permet de faire ça assez facilement, et SFML qui est on va dire, son "amélioration" beaucoup plus rapide, plus haut niveau, mais codée en C++.

-MasterLink-
-MasterLink-
Niveau 6
17 octobre 2007 à 18:23:10

Pour SDL je savais qu´on pouvait coller des images mais je ne savais pas qu´on pouvait sauvegarder l´image finale, ou choisir la taille de l´image qu´on veux sauver au final. Il faudra que je regarde la doc :)

naruto_forever
naruto_forever
Niveau 10
17 octobre 2007 à 19:44:20

Non pour ça faut coder des fonctions :-)))
Pour sauver je crois qu´il ya déjà une fonction mais par contre pour la taille il yen a pas.

-MasterLink-
-MasterLink-
Niveau 6
17 octobre 2007 à 20:04:05

Donc j´ai testé.
Je fais mon programme normalement mais j´ais juste le soucis de la sauve.
Donc en gros je prend un SDL_Surface* comme base, et je lui assigne mon image de fond (comme sa je peux choisir moi-meme la taille finale, selon la taille de l´image). Je blitte les autre dessus, mais comme je le pensais, quand je fait un SDL_Flip(), sa plante... Donc je suppose qu´il y a une différence pour faire un flip sur une fenetre et sur une image BMP...
Quelqu´un sait laquelle?

naruto_forever
naruto_forever
Niveau 10
17 octobre 2007 à 20:48:16

Mets ton code sur http://rafb.net/paste/ pour qu´on voies :-)))

-MasterLink-
-MasterLink-
Niveau 6
18 octobre 2007 à 17:39:41

Donc je ne suis pas fort en C, donc il est fort possible que le code soit moche :p)
J´ais repris 2 fonction de Fvirtman pour le LoadImageSDL()

Le code est, pour le moment, censé copier une image 30 fois a intervalle regulier (sur y) et de décaler tous les 5 collage (sur x)

http://rafb.net/p/rH9KAt50.html

-MasterLink-
-MasterLink-
Niveau 6
18 octobre 2007 à 17:41:47

Arf, j´ais oublié un petit truc dans le copiage sur rafb.net

=> http://rafb.net/p/G7aVJO16.html

Fvirtman
Fvirtman
Niveau 10
18 octobre 2007 à 18:16:03

Pour faire marcher ton programme :
ne flip pas sur le fond, il faut que tu initialises SDL, et que tu flippes sur l´image retournee par SDL_SetVideoMode (regarde mon tuto, regarde sur quoi je flip :) )
Cette image créée sera l´écran, il faut que tu blit dessus ce que tu veux.

Cependant, tu n´as finalement pas besoin de ça puisque ton but n´est pas de l´afficher sur l´écran : tu blit des lignes sur l´image fond, donc tu n´as pas besoin de flip, tu as juste besoin de sauver l´image "fond"
Et pour ton plus grand bonheur, SDL sait sauver des BMP :-)

http://www.libsdl.org/cgi/cgi/docwiki.cgi/SDL_5fSaveBMP

-MasterLink-
-MasterLink-
Niveau 6
18 octobre 2007 à 20:00:52

Ok merci.
Donc la sauve marche niquel, j´ais juste changé SDL_Flip() par SDL_SaveBMP().
Par contre je n´ais pas l´impression que les 30 replacement de l´image soit bien pris en compte, les image se superposent, donc ont la meme valeure de y. Je vais donc bidouiller un peu tout sa, et si en attendant quelqu´un voit la faute dans le code, sa serait sympa de me la dire :)

En tout cas merci

Fvirtman
Fvirtman
Niveau 10
18 octobre 2007 à 23:20:15

quand je regarde ton code, je vois que le x du rect de blit varie %5 -> donc, en x, tu n´iras pas plus loin que 5 blocs.
Mais je vois que le y, lui, varie systématiquement, du coup, ça devrait (normalement) te faire un truc comme ça :

X
_X
__X
___X
____X
X
_X
__X
___X
____X
X
_X
__X
___X
____X

Or, peut etre voulais quadriller ? faire plutot :

XXXXX
XXXXX
XXXXX

-> dans ces cas la, il faut faire (nbl/5)*102 + 290;

A noter aussi qu´une image blittée dehors ne provoque par d´erreurs, mais n´apparait logiquement pas : ton image de fond est elle assez grande ? sachant que la formule du dessus montre que le blit commence a 290.

-MasterLink-
-MasterLink-
Niveau 6
19 octobre 2007 à 15:56:24

Non en fait c´était juste une petite erreur de frappe. Le programme marchait bien sauf qu´après, j´avais fait pix.y = ligne->h au lieu de pix.h = ligne->h, voila pourquoi :p)

Par contre j´ais une derniere petite erreur. Le programme marche niquel, pas de problème la dessus. Par contre, meme quand je ferme la console avec la croix, les processus restent activé (cmd.exe et Projet1.exe)et je ne peux pas relancer le programme une deuxième fois de suite a moins d´aller dans le gestionnaire et de fermer manuellement. Comment je dois procéder pour fermer le tout après le system("Pause") ?

-MasterLink-
-MasterLink-
Niveau 6
25 octobre 2007 à 18:20:45

En plus de cette question, j´en ai une derniere (je comprends pas bien comment recherche sur la doc officielle, je retombe toujours sur la meme page) : est-il possible d´étirer les images?

Merci

Giga-Nova
Giga-Nova
Niveau 9
25 octobre 2007 à 19:29:22

Pour la croix tu doit rajouter l´option
if event.event.keysym (enfin bon quelque chose du genre) == SDL.QUIT
break;

Etirer ? je ne sais pas j´ai jamais essayé, regarde dans sdl_glx c´est du traitement d´image (rotation etc..)

Sous forums
  • Aide à l'achat Mac
  • Création de Jeux
  • Linux
  • Création de sites web
  • Programmation
  • Internet
  • Steam Deck
  • Macintosh
  • Hardware
La vidéo du moment