Jak zapisać BufferedImage w schowku systemowym?Skopiuj buforowane zdjęcie do schowka
Odpowiedz
Tutaj jest kod działa zaczerpnięte z here testowane z powodzeniem
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;
}
}
}
kod Jigar za rzeczywiście przechowywać BufferedImage w schowku, chociaż być szczegółowe, to kładzie screen-przechwytywania całego ekranu do schowka.
To może być lub nie być tym, o co prosiłeś. Jeśli chciałbyś skopiować swój własny specyficzny BufferedImage
, w celu wykonania tego, zastąpiłem konstruktora z przykładu Jigara metodą 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);
}
Usuń również metodę main()
w swojej klasie.
Następnie można skopiować BufferedImage z kodem takich jak to:
BufferedImage bim;
// set bim to your desired BufferedImage content
// ...
CopyImagetoClipBoard ci = new CopyImagetoClipBoard();
ci.copyImage(bim);
Dobre rzeczy, ale nie trzeba tworzyć tam zupełnie nowej klasy. –
Och, czekaj. Nieważne. Jeśli ktoś jeszcze pomyślał jak ja, zauważ, że 'CopyImagetoClipBoard' jest' ClipboardOwner'. –
- 1. Skopiuj zakres do schowka
- 2. .Net Core - skopiuj do schowka?
- 3. jQuery skopiuj listę wielu wierszy do schowka
- 4. Skopiuj tekst obszaru zaznaczonego do schowka
- 5. Skopiuj obraz do schowka w Androidzie
- 6. Skopiuj bieżące polecenie w wierszu polecenia bash do schowka
- 7. Skopiuj do schowka za pomocą javascript dla phonegap
- 8. babun: skopiuj/wklej ze schowka Windows do vima?
- 9. Skopiuj do schowka, który działa również na urządzeniach mobilnych?
- 10. Skopiuj do schowka dla wszystkich przeglądarek korzystających z javascript
- 11. Delphi 7 - Skopiuj zawartość zmiennej lokalnej (podczas debugowania) do schowka
- 12. Skopiuj do schowka w Ruby, HTML lub C#
- 13. Skopiuj tekst do schowka przez safari i odczytaj dane ze schowka w aplikacji iOS
- 14. Czy obrazy schowka dokowanego Travis CI mogą być buforowane?
- 15. Skopiuj linie do os x schowka z vim na zdalnej konsoli
- 16. Skopiuj NSAttributedString do tabeli
- 17. skopiuj wszystkie nazwy metod - Intellij
- 18. iPhone skopiować coś do schowka za pomocą kodu
- 19. Zapytanie buforowane PHP PDO
- 20. DataGridView: Kopiowanie zakończone do schowka
- 21. Nie można dodać do schowka
- 22. Na click - kopiowanie do schowka
- 23. wyjście skryptu powłoki do schowka
- 24. JavaFX TableView kopia do schowka
- 25. Dziwność z dostępem do schowka
- 26. Zapobieganie usuwaniu schowka przez Vim przy wyjściu
- 27. Android Kopiuj obraz do schowka/clipdata
- 28. Skopiuj listę plików do katalogu
- 29. Skopiuj plik do folderu zasobów
- 30. skopiuj wykres (adjacency_list) do innego
Można uciec z przechodzącej wartość null zamiast implementacji ClipboardOwner. –