Я только что научился использовать потоки вчера, и я пытаюсь кодировать некоторые изображения с помощью потоков, но я получу эту ошибку java.lang.IllegalArgumentException: im == null!
Я пробовал делать то же самое без потоков, и он работал нормально, только медленно, а не из-за изображения io, но из-за времени, которое требуется для кодирования изображений. WinDef.HDC - это переменный тип, который я получил из библиотеки JNA. Когда я попробовал это без потоков, я мог легко записать 1000 изображений (около 60 мб).java.lang.IllegalArgumentException: im == null! error
//The thread class
public class imageEncoderThread extends Thread {
HDC originalImage;
BufferedImage image;
public imageProcessThread (HDC rI) {
originalImage = rI'
}
@Override
public void run() {
//returns a buffered image
image = process(rawImage);
try {
ImageIO.write(image, "jpg", new File (filePath));
} catch (IOException e) {
}
}
}
//full stack trace
Exception in thread "Thread-5" java.lang.IllegalArgumentException: im == null!
at javax.imageio.ImageIO.write(Unknown Source)
at javax.imageio.ImageIO.write(Unknown Source)
at com.capture.SingleImageEncoderThread.run(Thread.java:33)
Exception in thread "Thread-7" java.lang.IllegalArgumentException: im == null!
at javax.imageio.ImageIO.write(Unknown Source)
at javax.imageio.ImageIO.write(Unknown Source)
at com.capture.SingleImageEncoderThread.run(Thread.java:33)
Exception in thread "Thread-6" java.lang.IllegalArgumentException: im == null!
at javax.imageio.ImageIO.write(Unknown Source)
at javax.imageio.ImageIO.write(Unknown Source)
//and so on with the same exception
Кажется, изображение = JNAScreenShot.encodeRawWindow (rawImage, bounds); на этой строке изображение равно null. Вы пытались распечатать System.out? – kosa
попробовал это только сейчас, он распечатывает нуль, кажется, что по какой-то причине он не пропускает объект в поток - на стороне заметки, когда я проверил api для WinDef.HDC, он расширяет дескриптор, не уверен, что это имеет какое-либо отношение к Это? – user4090
Я не знаю, что это за метод, как только он исправлен, все должно работать нормально. – kosa