gpt4 book ai didi

java - 读取/写入图像的问题

转载 作者:行者123 更新时间:2023-12-02 05:45:50 25 4
gpt4 key购买 nike

我一直在研究通过使用 Thymeleaf 的 Spring Web 应用程序来加密和解密图像的代码。我已经测试了该过程中涉及的每种方法,并且每种方法都是正确的。流程的流程应该是:

User1上传图像和 key ,应用程序将图像分解为像素,然后分解为128位stateHexes,stateHexes使用AES加密,并重建为加密图像以显示给User1下载。然后,用户 1 将图像发送给用户 2,用户 2 然后下载图像并使用相同的过程对其进行解密。

当我像上面的场景一样对待它时,图像在存储后会发生某种变化。但是,如果我按如下方式处理它,文件就会完美加密和解密。

所以我认为问题一定在于保存文件或检索文件,或者与文件处理有关的其他问题。

下面我将展示如何加载和保存图像的代码片段。

这就是我获取图像的方式


// Get the filename and path for the image passed in from user
Path fileNameandPath = Paths.get(uploadDirectory, file.getOriginalFilename());

// Generate the file and write the image onto it
File imageFile = fileNameandPath.toFile();
BufferedImage image = null;
try {
Files.write(fileNameandPath, file.getBytes());
image = ImageIO.read(imageFile);
Files.delete(fileNameandPath);
} catch (IOException e) {
e.printStackTrace();
System.out.println("COULDNT READ IMAGE AT = " + fileNameandPath);
}

这就是我创建输出图像的方式


String outputFilePath = new File("src/main/resources/static").getAbsolutePath() + "\\output.jpg";
File outputFile = new File(outputFilePath);
try {
outputFile.createNewFile();
} catch (IOException e) {
e.printStackTrace();
System.out.println("FILE ALREADY EXISTS");
}

// Write the image to the outputfile
try {
ImageIO.write(outputImage, "jpg", outputFile);
} catch (IOException e) {
e.printStackTrace();
}

我传入一个全黑图像(每个像素的十六进制代码是 000000),它读取图像并按预期进行加密,但是在解密时,它读取前一个图像是错误的,这让我相信这不是代码,而是大多数文件可能是如何存储/检索的?我只有一个猜测:文件不知何故混淆了。如果有人知道为什么会发生这种情况,任何帮助或线索将不胜感激。

我认为这可能与我写入图像的方式有关。读取图像没有问题,但我写入图像的方式似乎在某种程度上改变了它。

最佳答案

睡了一觉后,我意识到,因为我需要图像在读写时保持不变,所以由于 .jpg 文件的有损性质,我丢失了一些图像。现在,我将文件另存为 .png,没有出现任何错误。希望这对以后的人有所帮助!

关于java - 读取/写入图像的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56096739/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com