J'ai un objet qui contient de nombreuses images tamponnées, je veux créer un nouvel objet en copiant toutes les images tamponnées dans le nouvel objet, mais ces nouvelles images peuvent être modifiées et je ne veux pas que les images de l'objet d'origine soient modifiées en modifiant le nouvelles images d'objets.
est-ce clair?
Est-ce possible de le faire et quelqu'un peut-il suggérer une bonne façon de le faire s'il vous plaît? J'ai pensé à getSubImage mais j'ai lu quelque part que toutes les modifications apportées à la sous-image sont reliées à l'image parente.
Je veux juste pouvoir obtenir une nouvelle copie ou un clone entièrement séparé d'une BufferedImage
java
copy
clone
bufferedimage
f1wade
la source
la source
clone()
méthode? Ou ai-je manqué quelque chose? Je ne sais pas grand-chose sur laBufferedImage
classeBufferedImage
ne met pas en œuvreCloneable
et laclone()
méthode a un accès protégé.Réponses:
Quelque chose comme ça?
la source
Je fais ça:
Cela fonctionne assez bien et c'est simple à utiliser.
la source
La procédure mentionnée précédemment échoue lorsqu'elle est appliquée aux sous-images. Voici une solution plus complète:
la source
Une autre façon consiste à utiliser la
Graphics2D
classe pour dessiner l'image sur une nouvelle image vierge. Cela ne clone pas vraiment l'image, mais cela entraîne la production d'une copie de l'image.la source
La classe BufferedImage n'implémente pas l'interface clonable. Ainsi, la méthode de clonage n'est pas remplacée. Voici une alternative à une technique de copie profonde: Java Tip 76: Une alternative à la technique de copie profonde
la source
Je sais que cette question est assez ancienne, mais pour les futurs visiteurs, voici la solution que j'utiliserais:
Veuillez me corriger si le fait de changer le juste obtenu
newImage
affecte également l'image originale de quelque manière que ce soit.-> Javadoc pour getScaledInstance
-> Javadoc pour SCALE_DEFAULT (les autres constantes sont listées juste en dessous de celle-ci)
la source
Image
, nonBufferedImage
.