Fichiers images et codes hexa

greatspirit Messages postés 13 Date d'inscription lundi 29 mars 2004 Statut Membre Dernière intervention 6 juin 2007 - 20 nov. 2005 à 13:01
Lutinore Messages postés 3246 Date d'inscription lundi 25 avril 2005 Statut Membre Dernière intervention 27 octobre 2012 - 21 nov. 2005 à 07:57
Je voudrais éditer des fichiers images du style bitmap pixel par pixel à partir de leur code hexa. Je voulais savoir s'il y avait un moyen de retrouver ces codes hexa pour les stocker dans un tableau et les editer, puis remettre ces données sous forme de bitmap.
Merci

2 réponses

cs_coq Messages postés 6349 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 101
20 nov. 2005 à 13:46
Salut,

Avec Bitmap.GetPixel ?
Et si tu as besoin de meilleures performances, regarde dans les sources de ce site tu devrais trouver plusieurs exemples d'utilisation de GDI non managé.

/*
coq
MVP Visual C#
*/
0
Lutinore Messages postés 3246 Date d'inscription lundi 25 avril 2005 Statut Membre Dernière intervention 27 octobre 2012 41
21 nov. 2005 à 07:57
Pour éditer un bitmap tu dois verrouiller le bitmap en mémoire et travailler directement dessus avec les pointeurs, récupérer un tableau de valeurs hexa ou de couleurs pour ensuite recréer un bitmap c'est trop long, enfin ça depend de ce que tu veux faire..

Un exemple pour appliquer un filtre avec une image 24bpp.

private struct BGR
{
public byte B;
public byte G;
public byte R;
}


private unsafe void ApplyFilter( Bitmap bmp )
{
try
{
int width = bmp.Width;
int height = bmp.Height;
BitmapData data = bmp.LockBits( new Rectangle( 0, 0, width, height ), ImageLockMode.ReadWrite, bmp.PixelFormat );
int stride = data.Stride;
byte* pStart = ( byte* )data.Scan0;
BGR* p = null;


for ( int y = 0; y < height; y++ )
{
p = ( BGR* )( pStart + y * stride ); // word aligned.


for ( int x = 0; x < width; x++ )
{
// Negative Filter.
p->R = ( byte )( 255 - p->R );
p->G = ( byte )( 255 - p->G );
p->B = ( byte )( 255 - p->B );


p++;
}
}

bmp.UnlockBits( data );


//bmp.Save( "Negative.bmp", ImageFormat.Bmp );
}
catch ( Exception ex )
{
MessageBox.Show( ex.ToString( ) );
}
}
0
Rejoignez-nous