簡體   English   中英

使用ImageIO打開圖像后的Java文件操作

[英]Java file operations after opening image with ImageIO

我正在使用Java並合並兩個圖像。 我保存了合並的圖像並想要刪除疊加層,但是似乎仍有流在打開。 而且我不知道哪些以及如何關閉它們。

f_overlayf_image都是文件。

  // load source images
    BufferedImage image = null;
    BufferedImage overlay = null;
    try {
        log.debug(f_image.getAbsolutePath());
        log.debug(f_overlay.getAbsolutePath());
        image = ImageIO.read(f_image);
        overlay = ImageIO.read(f_overlay);
    } catch (IOException e) {
        log.error(e.getMessage());
    }

     // create the new image, canvas size is the max. of both image sizes
    int w = Math.max(image.getWidth(), overlay.getWidth());
    int h = Math.max(image.getHeight(), overlay.getHeight());
    BufferedImage combined = new BufferedImage(w, h, BufferedImage.TYPE_INT_ARGB);

    // paint both images, preserving the alpha channels
    Graphics g = combined.getGraphics();
    g.drawImage(image, 0, 0, null);
    g.drawImage(overlay, 0, 0, null);

    // Save as new image
    try {
        ImageIO.write(combined, "PNG", f_image);
    } catch (IOException e) {
        log.error(e.getMessage());
    }

    // we can delete the overlay now
    log.debug("Delete overlay: " + f_overlay.delete());

有什么建議嗎?

我看不到您的代碼有什么問題。

但是,如果讀取成功,我只會刪除文件f_overlay。 重要的是,在對文件對象調用delete()之后,不得將其用於其他任何事情,因此最好分配f_overlay = null

boolean state = f_overlay.delete();
f_overlay=null;
log.debug("Delete ... "+state);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM