我会使用API 来读取图像ImageIO
并javax.imageio
调整 DPI/PPI(请参见下面的示例),并且可能会使用imgscalr或thumbnailator之类的包来调整大小,具体取决于您的需求/偏好。
代码类似于:
// input is typically a File or InputStream
// Wrap in ImageInputStream
ImageInputStream stream = ImageIO.createImageInputStream(input);
// Obtain reader
ImageReader reader = ImageIO.getImageReaders(stream).next(); // In real code, test for presence
reader.setInput(stream);
String formatName = reader.getFormatName(); // Get the format name
ImageReadParam param = reader.getDefaultReadParam();
// ... modify params as you see fit, or just go with defaults
IIOImage image = reader.readAll(0, param);
RenderedImage red = image.getRenderedImage();
BufferedImage buf = (BufferedImage) red; // In real code, test if it's safe, or convert
// .. pas buf along to imgscalr or thumnailator
image.setRenderedImage(buf);
IIOMetadata meta = image.getMetadata();
// ... modify DPI in meta data
ImageWriter writer = reader.getImageWriter();
writer.write(null, image, null); // Or modify write params if you need (last parameter)
您可以在此处查看为 JPEG 文件修改 DPI的示例。