Peinture pixels des images en Java
Quelle méthode est la meilleure façon de créer un pixel de l'image avec java.
Dire, je veux créer un pixel de l'image avec les dimensions 200x200 qui sont 40.000 pixels au total. Comment puis-je créer un pixel d'une couleur aléatoire et le rendre à une position donnée sur une JFrame.
J'ai essayé de créer un composant qui crée des pixels, mais il semble que ce n'est pas très performant si je créer un tel pixel un 250.000 fois avec une boucle for et ajouter à chaque instance d'un JPanels mise en page.
class Pixel extends JComponent {
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
g.setColor(getRandomColor());
g.fillRect(0, 0, 1, 1);
}
}
OriginalL'auteur Tom1983 | 2011-08-13
Vous devez vous connecter pour publier un commentaire.
Vous n'avez pas besoin de créer une classe pour cette. Java a déjà l'excellent BufferedImage classe qui fait exactement ce dont vous avez besoin. Voici quelques pseudo-code:
1:1, ne fonctionne pas lorsque vous essayez de mettre ce sur un swing volet. en utilisant le même code avec une image de
ImageIO.read()
, il n'. donc, il ya quelque chose de mal avec le code ici, si je ne suis pas sûr de ce queOriginalL'auteur Perception
La clé ici est la
Canvas
classe. C'est le standardComponent
qui permet à l'arbitraire du tirage des opérations. Pour l'utiliser, vous devez sous-classe de laCanvas
de classe et de remplacer lespaint(Graphics g)
méthode, puis boucle sur chaque pixel et attirer votre couleur aléatoire. Le code suivant devrait fonctionner:L'image générée ressemble à ceci:
Canvas
etJFrame
; aussi envisager denew Color(random.nextInt(), true)
.Même effet peut être obtenu par l'instanciation d'un
Frame
au lieu deJFrame
pour éviter bizarre mixages.OriginalL'auteur kylc
Vous souhaiterez probablement créer un
BufferedImage
de la taille que vous voulez, et utiliserimg.setRGB(x, y, getRandomColor())
pour créer une collection de pixels. Puis vous pourrait rendre l'ensemble de l'image où vous le souhaitez.OriginalL'auteur cHao