次のオプションの両方を試しました。
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 画像をファイルに保存する正しい方法は何ですか?
編集:
そうです、画面セッションを記録できるKrutという Java プログラムを見つけたのですが、JPEGImageEncoder を使用していて、画質が思うように良くないので、ImageIO を使用してシーケンスをエンコードできないかと考えています。
ImageIO でそれができない場合、次の質問は、それをエンコードするために使用できるスタンドアロンのオープン ソース PNGImageEncoder があるかどうかです。オープンソースの PNGImageEncoders があることは知っていますが、それらはプロジェクトに絡み合っており、すべてのサポート ファイルを取得するのが難しい傾向があります。何かアイデアはありますか? ありがとう!