.Net GDI+
[40 mn de lecture - paru le 4/15/2004 4:43:05 PM - Public : Confirmé]
|
   
|
Auteur
6. Modification par Pixels
Allons toujours plus loin dans la manipulation des images.
6.1. Résolutions
GDI+ vous permet aussi de modifier la résolution d'une image. Vous devez utiliser la méthode SetResolution qui prend en paramêtre la résolution verticale et la résolution horizontale
/// <summary>
/// changer la résolution de l'image en cours
/// </summary>
public void resolution(float nouvelleResolution)
{
// création d'une image au meme dimension que l'image source
Bitmap tempImage = new Bitmap(monImage);
int W=tempImage.Width, H=tempImage.Height;
// on parcours l'image pixel par pixel pour modifier chacun d'entre eux
for (int li=0; li<H; li++)
for (int col=0; col<W; col++)
{
tempImage.SetResolution(nouvelleResolution,nouvelleResolution);
}
monImage.Dispose();
monImage = tempImage;
}
6.2. Transparence
Nous allons mettre un filte ou plutot une image, ici un rectangle jaune et lui donnée un opacité minime.
/// <summary>
/// Image transparente par dessus l'image originales
/// </summary>
public void transparence(string chemin)
{
// on crée l'image depuis une image existante
Bitmap curImage = new Bitmap(monImage);
Graphics g =Graphics.FromImage(curImage);
// on dessine l'image
g.DrawImage(curImage, 0, 0, curImage.Width, curImage.Height);
// on crée un objet avec différent opacité
SolidBrush semiTransBrush = new SolidBrush(Color.FromArgb(60, 255, 255, 0));
// dessin du graphic avec la transparence
g.FillRectangle(semiTransBrush, 0, 0, curImage.Width, curImage.Height);
monImage.Dispose();
monImage = curImage;
}
| AVANT |
APRES |
 |
 |
6.3. Noir et Blanc
Pour la transformation noir et blanc d'une image, vous avez plusieurs possibilités. Nous allons utlisée la méthode pixels par pixels. Sachez que cette méthode est longue et qu'elle peut nécessité plusieurs secondes pour des gros fichiers
/// <summary>
/// transformation Noir et Blanc
/// </summary>
public void noirBlanc()
{
// création d'une image au meme dimension que l'image source
Bitmap tempImage = new Bitmap(monImage);
int W=tempImage.Width, H=tempImage.Height;
// on parcours l'image pour modifier pixel par pixel
for (int li=0; li<H; li++)
for (int col=0; col<W; col++)
{
Color c = tempImage.GetPixel(col, li);
int gris = (c.R + c.G + c.B)/3;// on défini la couleur grise
tempImage.SetPixel(col, li, Color.FromArgb(gris, gris, gris));// on change la couleur du pixel en cours
}
monImage.Dispose();// on libére les ressources de l'image source
monImage = tempImage;// on attribut à l'image source la nouvelle image
}
| ORIGINALE |
NOIR & B |
 |
 |
|