Tengo una imagen. Necesito hacer una copia exacta y guardarlo en BufferedImage, pero no hay Image.clone(). La cosa debería estar dentro de un ciclo de cálculo y, por lo tanto, debería ser realmente rápido, sin copia de píxel por píxel. ¿Cuál es el mejor método de rendimiento para hacer esto?Cómo clonar imagen?
Respuesta
Puede dibujar en una imagen almacenada en el búfer, por lo que debe crear una imagen en memoria intermedia, crear un contexto de gráficos a partir de ella y dibujar su imagen original.
BufferedImage copyOfImage =
new BufferedImage(widthOfImage, heightOfImage, BufferedImage.TYPE_INT_RGB);
Graphics g = copyOfImage.createGraphics();
g.drawImage(originalImage, 0, 0, null);
Hay otra manera:
BufferedImage copyOfImage = image.getSubimage(0, 0, image.getWidth, image.getHeight);
No, esto no funcionará, ya que 'copyOfImage' y' image' compartirán los búferes de respaldo (será una copia superficial). Las ediciones hechas en una, se reflejarán en la otra. – haraldK
Image clone = original.getScaledInstance(original.getWidth(), -1, Image.SCALE_DEFAULT);
Esto podría no ser muy bonito, pero getScaledInstance
retornos, como su nombre indica, una instancia de su Image
objeto original. Usualmente solo se usa para cambiar el tamaño. -1
le dice al método que mantenga la relación de aspecto tal como está
¿Podría por favor [editar] su respuesta para dar una explicación de por qué este código responde la pregunta? Las respuestas de solo código son [desaconsejadas] (http://meta.stackexchange.com/questions/148272) porque no enseñan la solución. – DavidPostill
- 1. Cómo clonar una Imagen Buffered
- 2. Cómo clonar ImageData?
- 3. Cómo clonar() StringBuilder
- 4. Cómo clonar un iterador?
- 5. Cómo clonar un InputStream?
- 6. Cómo clonar el objeto js?
- 7. ¿Cómo puedo clonar una vista?
- 8. Cómo clonar usuario en Oracle
- 9. Cómo clonar objetos en NHibernate?
- 10. Clonar solo una rama
- 11. AS3 - Clonar un objeto
- 12. C# clonar una pila
- 13. cómo clonar un objeto en Android?
- 14. Cómo clonar un objeto Date en JavaScript
- 15. cómo clonar un proyecto en heroku
- 16. Cómo puedo clonar un objeto JAXB
- 17. ¿Cómo puedo clonar un objeto de diccionario?
- 18. Cómo clonar (y restaurar) un subárbol DOM
- 19. ¿Cómo crear y clonar un objeto JSON?
- 20. Itext - ¿Cómo clonar páginas con acrofields?
- 21. ¿Cómo se puede clonar un objeto WPF?
- 22. Cómo clonar repositorios git en redmine?
- 23. Cómo clonar selectivamente un repositorio git
- 24. ActiveRecord: ¿Cómo puedo clonar las asociaciones anidadas?
- 25. Cómo clonar un objeto en Flex?
- 26. Cómo clonar() un elemento n veces?
- 27. ¿Cómo puedo clonar una solución .NET?
- 28. ¿Cómo clonar un objeto generador de Python?
- 29. Git: ¿Cómo clonar el primer compromiso?
- 30. entero Objeto Clonar Gráfico
Eche un vistazo a esta http://stackoverflow.com/questions/3514158/how-do-you-clone-a-bufferedimage – user219882
Copia la imagen por píxel -pixel (solo copia los datos de la trama). ¿Hay alguna forma de hacerlo más rápido? – Cenius
Si quiere una copia profunda, no hay otra forma que conozca. ¿Y por qué quieres clonar cada iteración de bucle? – user219882