Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在文件夹中保存图像时出现问题_Java_Image Processing_File Io - Fatal编程技术网

Java 在文件夹中保存图像时出现问题

Java 在文件夹中保存图像时出现问题,java,image-processing,file-io,Java,Image Processing,File Io,我正在开发一个应用程序,需要将图像的缩略图保存在图像所在文件夹内的文件夹中。通过文件选择器选择图像文件夹 我在保存缩略图时遇到问题。它表示错误消息“未找到文件”异常 我编写的代码是: import java.awt.Graphics2D; import java.awt.image.BufferedImage; import java.io.File; import java.io.IOException; import javax.imageio.ImageIO; public class

我正在开发一个应用程序,需要将图像的缩略图保存在图像所在文件夹内的文件夹中。通过文件选择器选择图像文件夹

我在保存缩略图时遇到问题。它表示错误消息“未找到文件”异常

我编写的代码是:

import java.awt.Graphics2D;
import java.awt.image.BufferedImage;
import java.io.File;

import java.io.IOException;
import javax.imageio.ImageIO;

public class ThumbnailFactory {

    public ThumbnailFactory() {
    }

    public void run(String folder) {
        savepath = folder+"\\thumbnails";
        File dir = new File(folder);
        for (File file : dir.listFiles()) {
            createThumbnail(file);
        }
    }

    private void createThumbnail(File file) {
        try {
            // BufferedImage is the best (Toolkit images are less flexible)
            BufferedImage img = ImageIO.read(file);
            BufferedImage thumb = createEmptyThumbnail();

            // BufferedImage has a Graphics2D
            Graphics2D g2d = (Graphics2D) thumb.getGraphics();
            g2d.drawImage(img, 0, 0,
                    thumb.getWidth() - 1,
                    thumb.getHeight() - 1,
                    0, 0,
                    img.getWidth() - 1,
                    img.getHeight() - 1,
                    null);
            g2d.dispose();
            ImageIO.write(thumb, "PNG", createOutputFile(file));
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    private File createOutputFile(File inputFile) throws IOException {
       System.out.println(savepath+"\\"+inputFile.getName());
       File f =  new File(savepath+"\\"+inputFile.getName()+".png");
       if(!f.exists())
       {
           System.out.println("Creating the file in thumbnail directory");
           f.createNewFile();
       }
       return new File(savepath+"\\"+inputFile.getName()+".png") ;
    }

    private BufferedImage createEmptyThumbnail() {
        return new BufferedImage(100, 200,
                BufferedImage.TYPE_INT_RGB);
    }
    private String savepath;
}
它在
createOutputFile()
方法的
f.createNewFile()
点抛出
FileNotFoundException
NullPointerException

输入文件是选定文件夹中的图像。我必须将此图像的缩略图放置在选定文件夹内创建的文件夹中

比如说,, 所选图像文件夹为
D:\pictures
然后我需要在
D:\pictures
中的
D:\pictures\thumbnails
中放置每个图片的缩略图


请指出我所犯的错误以及如何纠正。

我想玩一个最终的静态缩略图,而G2D。。。它不起作用,但如果你能忍受使所有图像大小和形状相同的不均衡结果,不管原始尺寸如何;-)

我很高兴你把它解决了;-)


干杯。基思。

我想玩一个最终的静态缩略图,而G2D。。。它不起作用,但如果你能忍受使所有图像大小和形状相同的不均衡结果,不管原始尺寸如何;-)

我很高兴你把它解决了;-)


干杯。Keith.

与其自己编写所有代码,不如考虑使用该库。您的整个示例可以用以下几行来编写,这更好地表达了您的意图

public class ThumbnailFactory {

    public void run(String folder) {
        Thumbnails.of(new File(folder+"\\thumbnails").listFiles())
            .size(100,200)
            .outputFormat("png")
            .asFiles(Rename.SUFFIX_HYPTHEN_THUMBNAIL);
    }
}

您可以考虑使用该库,而不是自己编写所有这些代码。您的整个示例可以用以下几行来编写,这更好地表达了您的意图

public class ThumbnailFactory {

    public void run(String folder) {
        Thumbnails.of(new File(folder+"\\thumbnails").listFiles())
            .size(100,200)
            .outputFormat("png")
            .asFiles(Rename.SUFFIX_HYPTHEN_THUMBNAIL);
    }
}

\thumbnails
目录是否已存在?我看不出你在哪里创建它(正如我所预期的)。此外,你不应该明确地处理任何东西。@corlettk-我想他有,因为他说异常在
createOutputFile
中,在这种情况下,我会(至少尝试)重用
thumb
,它是
g2d
,而不是创建“重的”每个pic I进程的垃圾。只是一个想法。。。如果对您的用例足够快,请忽略我。@corlettk:缩略图目录是在将控件传递到此文件之前创建的。
\thumbnails
目录是否已经存在?我看不出你在哪里创建它(正如我所预期的)。此外,你不应该明确地处理任何东西。@corlettk-我想他有,因为他说异常在
createOutputFile
中,在这种情况下,我会(至少尝试)重用
thumb
,它是
g2d
,而不是创建“重的”每个pic I进程的垃圾。只是一个想法。。。如果对您的用例足够快,请忽略我。@corlettk:缩略图目录是在将控件传递到此文件之前创建的。我想我应该考虑寻找一个“正确执行”的现有库;-)我想我应该去寻找一个现有的图书馆,它“做得很好”;-)谢谢你的鱼。