ImageIO 是Java API for Image I/O (JAII) 的一部分,提供了一種便利的方法讀取和寫入各種格式的影像,包括JPEG。但是,預設情況下,ImageIO 不提供對 JPEG 壓縮等級的直接控制。本文探討如何克服此限制並在將 BufferedImage 儲存為 JPEG 檔案時設定所需的壓縮等級。
提供的 Java 函數 getScreenShot,捕獲 BufferedImage 並將其儲存為 JPEG 檔案。但是,它沒有指定任何壓縮設定。
<code class="java">public static void getScreenShot(BufferedImage capture, Path folder, String filename) { try { ImageIO.write(capture, "jpeg", new File(folder.toString()+"/"+filename+".jpg")); } catch (AWTException | IOException ex) { Logger.getLogger(ScreenShotMaker.class.getName()).log(Level.SEVERE, null, ex); } }</code>
要設定 JPEG 壓縮級別,您需要存取 ImageWriteParam 對象,該物件包含控制影像編碼過程。以下是更詳細的程式碼片段:
<code class="java">ImageWriter jpgWriter = ImageIO.getImageWritersByFormatName("jpg").next(); ImageWriteParam jpgWriteParam = jpgWriter.getDefaultWriteParam(); jpgWriteParam.setCompressionMode(ImageWriteParam.MODE_EXPLICIT); jpgWriteParam.setCompressionQuality(0.7f);</code>
透過將壓縮模式設定為 MODE_EXPLICIT,您可以明確控制壓縮等級。傳遞給compressionQuality的值決定了所需的壓縮級別,1.0f代表最大質量,0.0f代表最大壓縮。
透過合併這些增強功能,您可以自訂 JPEG 壓縮等級以滿足您的特定要求,同時使用 Java 中的 ImageIO 儲存影像。
以上是在Java中使用ImageIO保存影像時如何控制JPEG壓縮等級?的詳細內容。更多資訊請關注PHP中文網其他相關文章!