내가 다음 코드에서이 오류 메시지가 얻을 양도 사용하여 이미지를 transfering :이 오류를 수정하는 데 필요한오류는 클립 보드, 툴킷 및
Exception in thread "main" java.lang.IllegalArgumentException: Width (-1) and height (-1) cannot be <= 0 at java.awt.image.DirectColorModel.createCompatibleWritableRaster(DirectColorModel.java:999) at sun.awt.datatransfer.DataTransferer.imageToStandardBytes(DataTransferer.java:1994) at sun.awt.windows.WDataTransferer.imageToPlatformBytes(WDataTransferer.java:267) at sun.awt.datatransfer.DataTransferer.translateTransferable(DataTransferer.java:1123) at sun.awt.windows.WDataTransferer.translateTransferable(WDataTransferer.java:163) at sun.awt.windows.WClipboard.setContentsNative(WClipboard.java:73) at sun.awt.datatransfer.SunClipboard.setContents(SunClipboard.java:93) at automateSignature.LoadToClipboard.main(LoadToClipboard.java:8)
어떤 코드를 변경하거나 이미지 파일을 변경? 이 code은 오스카 레이즈 (Oscar Reyes)가 기고했지만 모든 오류는 내 것이란 점에 유의하십시오.
import java.awt.*;
import java.awt.datatransfer.*;
public class LoadToClipboard {
public static void main(String[] args) {
Toolkit tolkit = Toolkit.getDefaultToolkit();
Clipboard clip = tolkit.getSystemClipboard();
clip.setContents(new ImageSelection(
tolkit.getImage("MKSignature.jpg")), null);
}
}
class ImageSelection implements Transferable {
private Image image;
public ImageSelection(Image image) {
this.image = image;
}
// Returns supported flavors
public DataFlavor[] getTransferDataFlavors() {
return new DataFlavor[]{DataFlavor.imageFlavor};
}
// Returns true if flavor is supported
public boolean isDataFlavorSupported(DataFlavor flavor) {
return DataFlavor.imageFlavor.equals(flavor);
}
// Returns image
public Object getTransferData(DataFlavor flavor) throws UnsupportedFlavorException {
if (!DataFlavor.imageFlavor.equals(flavor)) {
throw new UnsupportedFlavorException(flavor);
}
return image;
}
}
나는 폭과 높이가 지정 될 수있는 코드에서 장소를 찾을려고 노력했지만 성공하지 않았습니다. 또한 jpg 파일의 속성을 검사하고 w와 h가 지정되었습니다. enter code here
나는 지금 다음에 코드를 변경
NEW ATTEMPT : createImage()
및 prepareImage()
의 사용을합니다. 너비 및 높이 오류가 이제 으로 고정되었습니다. 지금 클립 보드에 배치되는 이미지는 JPG 파일의 이미지와 동일하지 않습니다 그러나
public static void main(String[] args) {
Toolkit tolkit = Toolkit.getDefaultToolkit();
Clipboard clip = tolkit.getSystemClipboard();
//File file = new File(
// "C:\\aaaa\\Admin\\SIGNATUREForInsertionIntoDocs\\MKSignature.jpg");
signatureImage = tolkit.createImage(
"C:\\aaaa\\Admin\\SIGNATUREForInsertionIntoDocs\\MKSignature.jpg");
tolkit.prepareImage(signatureImage, 108, 60, null);
// JOptionPane.showConfirmDialog(null, "Press to continue");
ImageSelection i = new ImageSelection(signatureImage);
clip.setContents(i, null);
}
. 크기는 같지만 내용은 동일하지 않습니다.
합니다 (.jpg 파일로부터) GIMP에 표시된 화상 피아노이다.
위의 프로그램을 실행 한 후 클립 보드에서 붙여 넣은 이미지는 크기가 같지만 공백입니다.
어떻게 든 이미지의 내용이 삭제되었습니다. 내가 뭘 잘못하고 있니?
어둠 속에서 그냥 쐈다 : 이미지를로드하고 코드 (현재 한 줄)를 실행하는 사이에 wait()를 추가하십시오. AFAIK java awt는 이미지를 완전히로드하기 전에 코드가 실행될 수 있다는 것을 의미하는 별도의 스레드에서 이미지를 비동기 적으로로드합니다. afaik 동기식 javax.imageio.ImageIO를 살펴볼 수 있습니다. – ZeissS
감사합니다. 'JOptionPane.showConfirmDialog (null, "계속하려면 누르십시오"); wait() 대신에. 나는 그것을 잠시 동안 기다려 보았지만 그 실수는 똑같다. –
코드를 변경 했으므로 높이와 너비 오류가 수정되었습니다. 이미지가 클립 보드에 붙여 넣어집니다. 그러나 jpg 이미지와 크기는 같지만 그림은 공백으로 바뀝니다. 본 부록에 대한 본래의 질문의 수정 된 버전을 확인하십시오. –