un petit code que je possèdais dasn un de mes nombreux livres de java qui risque de peut-être être utilile pour certain
ça permet de mettre une image en Négatif, donc inversé ses couleurs
ça serait extrêemnt facile de le modifier pour faire une image noir et blanc. Mais va faire ça dans une autre source
Source / Exemple :
import java.applet.*;
import java.awt.*;
import java.awt.image.*;
// classe d'exemple
public class ExMM7 extends Applet {
Image imgOriginal; // image originale
Image imgNegativ; // image négative
MediaTracker medTreck; // surveillance des médias
int iHauteur = 0; // dimensions de l'image
int iLargeur = 0;
public void init(){
// chargement de l'image d'origine
loadOriginal();
// établissement des dimensions de l'image
iLargeur = imgOriginal.getWidth(this);
iHauteur = imgOriginal.getHeight(this);
// ajustement de la fenêtre d'applet
resize( iLargeur * 2, iHauteur );
// création du négatif
imgNegativ = createImage( new FilteredImageSource( imgOriginal.getSource()
, new ImageNegative() ) );
}// init
public void loadOriginal(){
// initialisation de MediaTracker
medTreck = new MediaTracker(this);
// chargement du fichier image à éditer
imgOriginal = getImage( getCodeBase(), getParameter("Image") );
medTreck.addImage( imgOriginal, 1 );
try{
medTreck.waitForID( 1 );
}catch (InterruptedException e){
System.out.println ("Erreur : "+e);
}
}// loadOriginal
public void paint(Graphics g){
update(g);
}// paint
public void update(Graphics g){
g.drawImage( imgOriginal, 0, 0, this );
g.drawImage( imgNegativ, iLargeur+1, 0, this );
}// update
}// // ExMM7
// classe auxiliaire pour le filtre
class ImageNegative extends RGBImageFilter{
public ImageNegative(){
canFilterIndexColorModel = true;
}// ImageNegative
public int filterRGB( int iX, int iY, int iRgb ){
// séparation des couleurs
int iR = (iRgb >> 16) & 0xFF; // rouge
int iG = (iRgb >> 8) & 0xFF; // vert
int iB = iRgb & 0xFF; // bleu
// enregistrement des valeurs HSB
float fHsb[] = new float[3];
// conversion des couleurs RVB dans le modèle HSB
Color.RGBtoHSB( iR, iG, iB, fHsb );
// inversion de la clarté
fHsb[2] = 1 - fHsb[2];
// reconversion en couleurs RVB (valeur alpha maximale)
return ( 0xFF000000 | Color.HSBtoRGB( fHsb[0], fHsb[1], fHsb[2] ) );
}// filterRGB
}// ImageNegative
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.