Làm cách nào để lưu trữ BufferedImage vào khay nhớ tạm của hệ thống?Sao chép BufferedImage vào clipboard
Trả lời
Dưới đây là mã làm việc lấy từ here thử nghiệm thành công
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;
}
}
}
đang Jigar của cửa hàng thực hiện một BufferedImage vào clipboard, mặc dù được cụ thể, nó đặt một màn hình-chụp toàn bộ màn hình vào clipboard.
Điều này có thể hoặc không thể là những gì bạn đã làm sau. Trong trường hợp bạn muốn sao chép BufferedImage
cụ thể của riêng bạn, để thực hiện điều này, tôi đã thay thế hàm tạo từ ví dụ của Jigar bằng phương thức 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);
}
Xóa phương thức main()
trong lớp học của anh ấy.
Sau đó bạn có thể sao chép BufferedImage của bạn với mã như thế này:
BufferedImage bim;
// set bim to your desired BufferedImage content
// ...
CopyImagetoClipBoard ci = new CopyImagetoClipBoard();
ci.copyImage(bim);
Thứ tốt, nhưng không cần phải tạo ra một lớp hoàn toàn mới ở đó. –
Ồ, đợi đã. Đừng bận tâm. Nếu bất cứ ai khác nghĩ như tôi, lưu ý rằng 'CopyImagetoClipBoard' là một' ClipboardOwner'. –
- 1. Sao chép nội dung DataGridView vào clipboard
- 2. DataGridView: Sao chép hoàn thành vào clipboard
- 3. Elisp: Sao chép bộ đệm vào clipboard
- 4. Nút Greasemonkey \ JavaScript Sao chép vào Clipboard
- 5. lệnh Cygwin để sao chép vào cửa sổ vào clipboard
- 6. Làm thế nào để sao chép vào clipboard bằng X11?
- 7. Sao chép tên đường dẫn/tệp trong Eclipse vào clipboard
- 8. Sao chép vào clipboard trong phần mở rộng chrome
- 9. Cách sao chép vào clipboard trong Emacs Lisp
- 10. Làm thế nào để sao chép vào clipboard trong F #?
- 11. Sao chép javascript đã tạo hình ảnh vào clipboard
- 12. WPF Datagrid: sao chép các hàng bổ sung vào clipboard
- 13. R: Chức năng sao chép vào clipboard trên Mac/OSX?
- 14. Sao chép hình ảnh vào clipboard bằng JavaScript/jquery
- 15. Sao chép vào clipboard từ IPython bằng Windows 7
- 16. Sao chép khóa công khai rsa vào clipboard
- 17. Sao chép văn bản của Vùng đã Chọn vào clipboard
- 18. Sao chép tệp trong nhật thực sao chép tên tệp (Chuỗi) thay vì tệp vào clipboard
- 19. Sao chép văn bản vào clipboard bằng Zero, Clipboard trong asp.net
- 20. Làm thế nào để bạn sao chép một BufferedImage
- 21. Bản sao JavaView TableView vào clipboard
- 22. nhấp đúp vào TStaticText trong ứng dụng Delphi XE2 sao chép chú thích vào clipboard
- 23. Clipboard Sao chép các đối tượng đến và đi từ
- 24. Làm thế nào để sao chép dữ liệu vào clipboard trong C#
- 25. iOS - phát hiện khi người dùng sao chép vào clipboard - [UIPasteboard generalPasteboard]
- 26. Làm thế nào để sao chép cả hai - HTML và văn bản vào clipboard?
- 27. sao chép hình ảnh .gif vào clipboard bằng UIPasteboard qua mã [iOS]
- 28. javascript cắt/sao chép/dán vào clipboard: Google đã giải quyết nó như thế nào?
- 29. Cách sao chép các dòng đã chọn vào clipboard trong vim
- 30. Làm thế nào để sao chép dữ liệu vào clipboard bằng Greasemonkey?
Bạn có thể nhận được ngay với truyền null thay vì một thực hiện ClipboardOwner. –