我已經問過一個問題如何保存大圖像,我想我在正確的軌道上,但我仍然需要一些建議。保存大圖像 - 光柵問題
我有一個形象的12000條12000,我需要將其保存爲png格式
BufferedImage中不能使用。
我已經建議使用RenderedImage接口,但不知何故我無法得到所需的結果。 (我還沒有與柵格的工作又那麼可能我有什麼不對),用於保存圖像的方法
代碼:爲PanelImage類
public static void SavePanel() {
PanelImage IMAGE = new PanelImage(panel);
try {
ImageIO.write(IMAGE, "png", new File(ProjectNameTxt.getText() + ".png"));
} catch (IOException e) {
}
}
和代碼:
public static class PanelImage implements RenderedImage {
// some variables here
public PanelImage(JImagePanel panel) {
this.panel = panel;
}
public Raster getData(Rectangle rect) {
sizex = (int) rect.getWidth();
sizey += (int) rect.getHeight();
image = null;
image = new BufferedImage(
(int) sizex,
(int) sizey,
BufferedImage.TYPE_INT_RGB);
g2 = image.createGraphics();
panel.paintComponent(g2);
return image.getData();
}
// rest of the implemented methods - no problems here
}
我注意到ImageIO一次請求一行像素(12000 x 1)。 此方法正在工作,但我仍然需要BufferedImage中的整個圖像。 我必須增加每次ImageIO的調用該方法的BImage的大小,否則我得到「座標出界!」 exeption
感謝
首先你說'BufferedImage'不能使用,但是在下面的代碼中你仍然在使用它。所以你是什麼意思?當你嘗試使用'BufferedImage'時,你會得到錯誤信息(也許是'OutOfMemoryError'?)?什麼是確切的錯誤信息? – Jesper
是的,首先我使用了緩衝圖像,但尺寸太大。我被建議只使用緩衝圖像來獲取ImageIO請求的光柵部分,但我不知道該怎麼做 – Icki