【发布时间】:2014-02-13 14:50:17
【问题描述】:
我目前正在使用 Java 进行图像处理。最初我使用 ImageIO 类来编写图像
ImageIO.write(image,"jpg",os);
这种方法的问题是丢失了实际的图像大小和质量。然后我更喜欢ByteStream
Files.readAllBytes(fi.toPath());
阅读和
fos.write(fileContent);
写图像。这完美地工作。我在这里面临的问题是我只能读取文件但不能读取图像(即 BufferedImage 图像)。是否可以在这里读取图像而不是文件,或者我应该转移到其他 IO 吗?
代码片段在这里,
try {
File fnew=new File("d:\\3\\IMG1.jpg");
java.io.FileOutputStream fos = new java.io.FileOutputStream(new File("d:\\3\\Test1\\4.jpg"));
File fi = new File("d:\\3\\7.jpg");
byte[] fileContent = Files.readAllBytes(fi.toPath());
fos.write(fileContent);
} catch (Exception e) {
System.out.println("Exception");
}
我们将不胜感激任何类型的建议或帮助。提前致谢。
【问题讨论】:
-
我的输入类型只是图像而不是文件。 :-(
-
您可以编辑问题并添加额外的详细信息
-
@Laxman - 我正在处理图像(读取图像、更改质量、调整大小、设置水印并最终将其写入目的地)。问题是如果我使用 ImageIO.write() 那么我在写作时会失去实际的图像质量。所以我转移到 FileOutputStream 并读取 byte[]。我的问题是当输入是图像时是否有可能读取图像的字节,或者我应该使用其他 IO 吗?
-
@J_User 阅读图像不是问题。使用不同的 IO 将无济于事。是 Bitmap 和 JPEG 之间的转换影响了质量。
-
@Navin 我只获取 JPEG 图像作为我的输入。我不会在我的流程中的任何地方更改其格式。 ImageIO.write() 会改变图片格式吗?
标签: java image inputstream javax.imageio fileoutputstream