java设置图片dpi
时间: 2023-03-29 10:01:46 浏览: 143
可以使用Java的ImageIO类来设置图片的dpi。具体方法是使用ImageIO.read()方法读取图片,然后使用ImageWriter类将图片写入到输出流中,同时设置dpi参数。例如:
```
File file = new File("image.jpg");
BufferedImage image = ImageIO.read(file);
ImageWriter writer = ImageIO.getImageWritersByFormatName("jpg").next();
ImageWriteParam writeParam = writer.getDefaultWriteParam();
ImageTypeSpecifier typeSpecifier = ImageTypeSpecifier.createFromBufferedImageType(BufferedImage.TYPE_INT_RGB);
IIOMetadata metadata = writer.getDefaultImageMetadata(typeSpecifier, writeParam);
IIOMetadataNode root = (IIOMetadataNode) metadata.getAsTree(metadata.getNativeMetadataFormatName());
IIOMetadataNode jpegVariety = new IIOMetadataNode("JPEGvariety");
IIOMetadataNode jfif = new IIOMetadataNode("appJFIF");
jfif.setAttribute("resUnits", "1"); // 1 = dots per inch
jfif.setAttribute("Xdensity", "300"); // set X dpi
jfif.setAttribute("Ydensity", "300"); // set Y dpi
jpegVariety.appendChild(jfif);
root.appendChild(jpegVariety);
metadata.setFromTree(metadata.getNativeMetadataFormatName(), root);
ImageOutputStream ios = ImageIO.createImageOutputStream(new FileOutputStream("output.jpg"));
writer.setOutput(ios);
writer.write(metadata, new IIOImage(image, null, metadata), writeParam);
ios.close();
writer.dispose();
```
这段代码将读取名为"image.jpg"的图片,将其dpi设置为300,并将结果保存为"output.jpg"。