¿Cómo almaceno una Imagen Buffered en el portapapeles del sistema?Copiar BufferedImage en el portapapeles
Respuesta
Aquí está el código de trabajo tomados de here comprobado con
package org.life.java.so.questions;
/**
* @author Jigar
*/
import java.awt.*;
import java.awt.datatransfer.*;
import java.awt.image.*;
import java.io.*;
public class CopyImagetoClipBoard implements ClipboardOwner {
public CopyImagetoClipBoard() {
try {
Robot robot = new Robot();
Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
Rectangle screen = new Rectangle(screenSize);
BufferedImage i = robot.createScreenCapture(screen);
TransferableImage trans = new TransferableImage(i);
Clipboard c = Toolkit.getDefaultToolkit().getSystemClipboard();
c.setContents(trans, this);
}
catch (AWTException x) {
x.printStackTrace();
System.exit(1);
}
}
public static void main(String[] arg) {
CopyImagetoClipBoard ci = new CopyImagetoClipBoard();
}
public void lostOwnership(Clipboard clip, Transferable trans) {
System.out.println("Lost Clipboard Ownership");
}
private class TransferableImage implements Transferable {
Image i;
public TransferableImage(Image i) {
this.i = i;
}
public Object getTransferData(DataFlavor flavor)
throws UnsupportedFlavorException, IOException {
if (flavor.equals(DataFlavor.imageFlavor) && i != null) {
return i;
}
else {
throw new UnsupportedFlavorException(flavor);
}
}
public DataFlavor[] getTransferDataFlavors() {
DataFlavor[] flavors = new DataFlavor[ 1 ];
flavors[ 0 ] = DataFlavor.imageFlavor;
return flavors;
}
public boolean isDataFlavorSupported(DataFlavor flavor) {
DataFlavor[] flavors = getTransferDataFlavors();
for (int i = 0; i < flavors.length; i++) {
if (flavor.equals(flavors[ i ])) {
return true;
}
}
return false;
}
}
}
código de Jigar no almacenar en efecto un BufferedImage en el portapapeles, aunque para ser específico, se pone una captura de pantalla de toda la pantalla en el portapapeles.
Esto puede o no ser lo que estabas buscando. En caso de que quisiera copiar su propio BufferedImage
específico, para lograr esto, reemplacé el constructor del ejemplo de Jigar con un método copyImage()
.
public class CopyImagetoClipBoard implements ClipboardOwner
{
public void copyImage(BufferedImage bi)
{
TransferableImage trans = new TransferableImage(bi);
Clipboard c = Toolkit.getDefaultToolkit().getSystemClipboard();
c.setContents(trans, this);
}
Retire el método main()
dentro de su clase también.
A continuación, puede copiar su BufferedImage con código como este:
BufferedImage bim;
// set bim to your desired BufferedImage content
// ...
CopyImagetoClipBoard ci = new CopyImagetoClipBoard();
ci.copyImage(bim);
Lo bueno, pero no hay necesidad de crear una clase completamente nueva allí. –
Oh, espera. No importa. Si alguien más pensó como yo, tenga en cuenta que 'CopyImagetoClipBoard' es un' ClipboardOwner'. –
- 1. Elisp: copiar el búfer en el portapapeles
- 2. Copiar rango al portapapeles
- 3. Portapapeles Copiar objetos ay desde
- 4. Cómo copiar al portapapeles en Emacs Lisp
- 5. Cómo copiar al portapapeles en F #?
- 6. Cómo copiar datos al portapapeles en C#
- 7. ¿Cómo copiar texto en el portapapeles en Javascript?
- 8. Greasemonkey \ JavaScript Copiar en el botón del Portapapeles
- 9. ¿Cómo se puede copiar/pegar desde el portapapeles en C++?
- 10. cómo copiar contenido de jtable al portapapeles
- 11. Copiar contenido de DataGridView al portapapeles
- 12. ¿Cómo copiar al portapapeles con GWT?
- 13. ¿Cómo copiar al portapapeles con X11?
- 14. Cómo copiar el valor de celda DataGrid al portapapeles
- 15. ¿Cómo copiar una línea al portapapeles en Eclipse?
- 16. Copiar y pegar varios elementos al portapapeles en IntelliJ IDEA
- 17. Copiar al portapapeles en la extensión de Chrome
- 18. Portapapeles independiente del sistema operativo copiar/pegar texto en C
- 19. Cómo copiar una cadena al portapapeles en C?
- 20. Cómo copiar líneas seleccionadas al portapapeles en vim
- 21. R: ¿Función para copiar al portapapeles en Mac/OSX?
- 22. ¿Las extensiones de Chrome admiten copiar imagen al portapapeles?
- 23. iPhone Copiar algo al portapapeles a través del código
- 24. Selección de toda la tabla/texto para copiar al portapapeles
- 25. comandos cygwin para copiar al portapapeles de Windows
- 26. Copiar al portapapeles para todos los navegadores usando javascript
- 27. Copiar texto desde una ventana CMD de Windows al portapapeles
- 28. Cómo copiar la salida de logcat al portapapeles?
- 29. DataGridView: copia completa en el portapapeles
- 30. ¿Hay alguna manera de copiar desde el portapapeles en Android a la terminal?
Usted puede conseguir lejos con el paso nulo en lugar de una implementación de ClipboardOwner. –