Я пробовал оба следующих варианта:
1
BufferedImage Buffered_Image;
MemoryCacheImageOutputStream MemoryCache_OutputStream =
new MemoryCacheImageOutputStream(new FileOutputStream("C:/Test.mov",false));
while (notFinished) // Main recording loop.
{
Buffered_Image=robot.createScreenCapture(); // Capture Screen image.
try { ImageIO.write(Buffered_Image,"png",MemoryCache_OutputStream); }
catch (Exception e) { e.printStackTrace(); }
}
2
BufferedImage Buffered_Image;
ImageWriter writer;
try
{
ImageOutputStream ios=ImageIO.createImageOutputStream(new File("C:/Test.mov"));
Iterator writers=ImageIO.getImageWritersByFormatName("png");
while (writers.hasNext())
{
writer=(ImageWriter)writers.next();
writer.setOutput(ios);
Out(writer.toString()+" canInsertImage : "+writer.canInsertImage(0));
// Got this: com.sun.imageio.plugins.png.PNGImageWriter@19fcc69
// canInsertImage : false
}
}
catch (Exception e) { }
cntPics=0;
while (notFinished) // Main recording loop.
{
Buffered_Image=robot.createScreenCapture(); // Capture Screen image.
writer.write(null,new IIOImage(Buffered_Image,null,null),null);
if (writer.canInsertImage(-1)) {
// Append image at highest index
writer.writeInsert(-1,new IIOImage(Buffered_Image,null,null),null);
} else Out("Writer can’t append image Id : "+cntPics);
cntPics++;
}
Ни один из них не сработал, как правильно сохранить несколько PNG-изображений в файл?
Изменить:
Вы правы, я нашел java-программу под названием Krut , которая может записывать сеансы экрана, но использует JPEGImageEncoder, качество изображения не такое хорошее, как я хочу, поэтому мне интересно, могу ли я использовать ImageIO для кодирования последовательности.
Если ImageIO не может этого сделать, мой следующий вопрос будет в том, есть ли автономный PNGImageEncoder с открытым исходным кодом, который я могу использовать для его кодирования? Я знаю, что существуют PNGImageEncoders с открытым исходным кодом, но они, как правило, запутываются в проектах, и из них трудно извлечь все вспомогательные файлы, есть идеи? Спасибо!