2008-12-23 90 views
2

我嘗試以下兩個選項:如何使用的ImageIO多個BufferedImages保存到一個文件

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: [email protected] 
    // 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,但他們往往會糾結於項目中,很難從中獲得所有支持文件,有什麼想法?謝謝!

回答

2

它看起來像你試圖通過在一行中寫入多個PNG文件來創建視頻(MOV)文件。這是行不通的。你可能必須找到一個第三方庫來將你的圖像編碼成一個視頻文件(這本身可能是一個很好的SO問題)。

編輯:我還應該注意,你可能實際上能夠通過在一行中寫入多個JPG圖像來獲得視頻,以獲得MJPEG (Motion JPEG)的形式,但對於其他格式,如MOV,您將需要一個實際的編碼器。

1

你想做什麼?重新發明MNG?即使你可以在同一個文件中寫入多個PNG圖像,它也可以讓一個複合文件不被程序所理解(除了你可能寫的)。

如Marc所建議的,如果您想製作電影,您可能需要查看QuickTime for Java(QTJava)。這是Processing使用動畫/幀製作動畫的解決方案。它具有多種質量/格式,從最差(但小文件)到最高質量(結果爲高文件大小)。

+0

哦,我從來沒有聽說過它,它可以記錄PC上的屏幕會話和聲音?如果您正在PC上觀看帶有聲音的視頻,可以將它錄製到電影中嗎?或者,如果您想製作一個關於如何通過鼠標點擊來使用PC程序的教學視頻,並且您可以用麥克風錄製語音,那麼它可以記錄下來嗎? – Frank 2008-12-23 21:30:01