java读取图片缩略方法_java 读取图片的缩略图和dpi
时间: 2023-11-04 18:09:38 浏览: 54
Java读取图片的缩略图可以使用Java提供的ImageIO类,具体实现过程如下:
```java
import java.awt.Image;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;
public class ImageUtil {
public static void main(String[] args) throws IOException {
File file = new File("image.jpg");
BufferedImage image = ImageIO.read(file);
// 缩放图片
Image scaledImage = image.getScaledInstance(100, 100, Image.SCALE_SMOOTH);
BufferedImage bufferedScaledImage = new BufferedImage(100, 100, BufferedImage.TYPE_INT_RGB);
bufferedScaledImage.getGraphics().drawImage(scaledImage, 0, 0 , null);
// 保存缩略图
ImageIO.write(bufferedScaledImage, "jpg", new File("thumbnail.jpg"));
}
}
```
上面的代码中,首先通过ImageIO类读取一张图片,然后使用getScaledInstance方法生成指定大小的缩略图。最后将生成的缩略图保存为文件。
至于dpi的问题,Java中并没有直接提供获取dpi的方法,但可以通过ImageReader类获取dpi参数,具体实现过程如下:
```java
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageReader;
import javax.imageio.metadata.IIOMetadata;
import javax.imageio.metadata.IIOMetadataNode;
import javax.imageio.stream.ImageInputStream;
import javax.imageio.ImageIO;
public class ImageUtil {
public static void main(String[] args) throws IOException {
File file = new File("image.jpg");
// 获取dpi
ImageInputStream iis = ImageIO.createImageInputStream(file);
ImageReader reader = ImageIO.getImageReaders(iis).next();
reader.setInput(iis, true);
IIOMetadata metadata = reader.getImageMetadata(0);
IIOMetadataNode stdTree = (IIOMetadataNode) metadata.getAsTree("javax_imageio_1.0");
IIOMetadataNode dimension = (IIOMetadataNode) stdTree.getElementsByTagName("Dimension").item(0);
float dpiX = Float.parseFloat(dimension.getAttribute("HorizontalPixelSize"));
float dpiY = Float.parseFloat(dimension.getAttribute("VerticalPixelSize"));
System.out.println("dpiX: " + dpiX);
System.out.println("dpiY: " + dpiY);
// 生成缩略图
BufferedImage image = ImageIO.read(file);
Image scaledImage = image.getScaledInstance(100, 100, Image.SCALE_SMOOTH);
BufferedImage bufferedScaledImage = new BufferedImage(100, 100, BufferedImage.TYPE_INT_RGB);
bufferedScaledImage.getGraphics().drawImage(scaledImage, 0, 0 , null);
// 保存缩略图
ImageIO.write(bufferedScaledImage, "jpg", new File("thumbnail.jpg"));
}
}
```
上面的代码中,首先通过ImageIO类读取一张图片,然后使用ImageReader类获取dpi参数。最后将生成的缩略图保存为文件。注意,上面的代码中获取的dpi是每英寸像素数,如果需要获取每厘米像素数,可以将上面的结果除以2.54。
相关推荐
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)