`

java设置图像dpi

阅读更多

 

private BufferedImage gridImage;
 ...

 private void saveGridImage(File output) throws IOException {
    output.delete();

    final String formatName = "png";

    for (Iterator<ImageWriter> iw = ImageIO.getImageWritersByFormatName(formatName); iw.hasNext();) {
       ImageWriter writer = iw.next();
       ImageWriteParam writeParam = writer.getDefaultWriteParam();
       ImageTypeSpecifier typeSpecifier = ImageTypeSpecifier.createFromBufferedImageType(BufferedImage.TYPE_INT_RGB);
       IIOMetadata metadata = writer.getDefaultImageMetadata(typeSpecifier, writeParam);
       if (metadata.isReadOnly() || !metadata.isStandardMetadataFormatSupported()) {
          continue;
       }

       setDPI(metadata);

       final ImageOutputStream stream = ImageIO.createImageOutputStream(output);
       try {
          writer.setOutput(stream);
          writer.write(metadata, new IIOImage(gridImage, null, metadata), writeParam);
       } finally {
          stream.close();
       }
       break;
    }
 }

 private void setDPI(IIOMetadata metadata) throws IIOInvalidTreeException {

    // for PMG, it's dots per millimeter
    double dotsPerMilli = 1.0 * DPI / 10 / INCH_2_CM;

    IIOMetadataNode horiz = new IIOMetadataNode("HorizontalPixelSize");
    horiz.setAttribute("value", Double.toString(dotsPerMilli));

    IIOMetadataNode vert = new IIOMetadataNode("VerticalPixelSize");
    vert.setAttribute("value", Double.toString(dotsPerMilli));

    IIOMetadataNode dim = new IIOMetadataNode("Dimension");
    dim.appendChild(horiz);
    dim.appendChild(vert);

    IIOMetadataNode root = new IIOMetadataNode("javax_imageio_1.0");
    root.appendChild(dim);

    metadata.mergeTree("javax_imageio_1.0", root);
 }

 

 

代码来源:http://stackoverflow.com/questions/321736/how-to-set-dpi-information-in-an-image

其中DPI就是你要设置的值,java中默认是72,如果需要打印图片,可能就要设置为300

INCH_2_CM表示1英寸等于多少厘米,这里就是2.54

 

分享到:
评论

相关推荐

    智能图片分辨率修改器(JAVA版)

    我经常会遇到这样的问题,我用高级点的手机或者单反相机拍照片时,由于图片分辨率非常高,动不动就是几千万像素……所以导致图片文件非常大,占用了很多的磁盘空间,所以我想把这些图片分辨率等比例缩小一点,这样...

    修改压缩图片的dpi_dpi_

    在IT行业中,DPI(Dots Per Inch)是衡量...总结,Java中修改图片DPI涉及读取图像、获取和检查元数据、修改或创建新的元数据、以及写入新图像。通过这种方式,我们可以灵活地调整压缩图片的DPI,以适应不同的应用场景。

    如何使用Java读取这张图片的分辨率?

    在Java编程语言中,读取图像的分辨率是一项常见的任务,特别是在处理图形用户界面(GUI)或者图像处理项目时。要实现这一功能,我们需要利用Java的内置库`javax.imageio`和`java.awt.Image`。本篇文章将详细讲解如何...

    提取图片dpi

    易语言提取bmp图片dpi,应用在图片的dpi分辨率的读取和修改

    基于opencv300的修改图片尺寸(容量)大小和dpi.zip

    总结起来,这个项目是关于使用OpenCV进行图像尺寸调整、容量优化以及DPI设置的实践,它展示了如何在C++环境中结合OpenCV进行图像处理,同时也涉及到了与图像文件格式和元数据相关的知识。通过学习和实践,开发者可以...

    Java读取图片分辨率依赖

    在Java编程环境中,读取图片分辨率是一项常见的任务,特别是在处理图像数据或进行图像分析时。为了实现这个功能,开发者通常需要依赖一些库来简化工作。在这个场景中,提到的两个库——`metadata-extractor-2.8.1....

    javafx界面+修改图片DPI源码

    运用javafx制作的UI,批量修改图片的DPI

    高分屏一键自动设置DPI工具 自动优化显示

    这个工具的主要功能就是自动调整DPI设置,以确保所有应用程序能在高分屏上以最适合的分辨率运行。它通过智能识别屏幕的物理尺寸和像素密度,然后自动调整系统级别的DPI缩放比例,使得文字、图标和其他用户界面元素...

    java 生成带logo、文本的二维码并修改图片的位深度

    java 生成带logo、文本的二维码并修改图片的位深度,不努力的程序员不是一个好的程序员

    用java把2个tiff或图片合并成一个tiff或图片

    1. **Java图像库**:Java标准库提供了`java.awt.image`和`javax.imageio`包,它们提供了处理图像的基本功能。例如,`BufferedImage`类用于创建和操作图像,`ImageIO`类则提供了读取、写入和转换图像文件的API。 2. ...

    [原创] 高清晰高品质Java图片压缩

    &lt;br&gt;在jdk1.6以下的版本环境下,压缩部分图片会很慢,经过我测试,如果图片的DPI越高,速度越慢,一般WEB使用图片DPI都是72,速度很快。大家可以试下。我测试了几张DPI为300,印刷品质的图片,大概要35秒左右,...

    Java获取单张超大图片分辨率

    总结一下,Java虽然在处理大型图像时有一些限制,但通过使用`ImageIO`和特定的插件如`TIFFImageReader`,我们可以有效地获取超大图片的分辨率。在处理超过4GB的TIFF文件时,应特别注意内存管理和流式处理,以避免...

    可以在正确解析JPEG图像的DPI像素

    在JAVA中可以在正确解析JPEG图像的DPI像素

    JAVA实现多页PDF转一张长图图片

    在Java编程环境中,将多页PDF转换为一张长图图片是一项常见的需求,特别是在文档处理、报表可视化或在线阅读场景中。本项目利用了名为`icepdf`的开源库,其核心组件是`icepdf-core-4.3.3.jar`,这是一个强大的PDF...

    Java打印小票自定义小票纸张大小,分辨率

    3. **设置分辨率**:在Java中,分辨率通常是指DPI(每英寸点数)。默认情况下,打印机可能使用的是72DPI或300DPI,但你可以在打印之前通过`PrinterJob`的`setResolution()`方法来调整。需要注意的是,不同的打印机...

    java pdf转图片

    3. **设置输出图像格式和质量**:决定要转换成哪种图片格式(JPEG、PNG、BMP等),以及图像的质量和分辨率。这会影响文件大小和图像清晰度。 4. **转换**:调用库提供的方法,如PDFBox的`PDPage.convertToImage()`...

    Java中PDF转图片

    总的来说,Java中的PDF转图片是一个涉及PDF解析、图像渲染和保存的复杂过程。通过使用像IcePDF这样的库,开发者可以方便地在Java应用程序中实现这个功能,为PDF文档提供另一种形式的展示和存储方式。

    java Pdf转换图片

    在上面的代码中,`renderImageWithDPI`方法可以设置输出图片的DPI(每英寸点数),从而控制图片的大小。DPI越高,图片质量越好,但文件体积也会更大。如果需要对PDF进行缩放,可以调整这个参数。 4. **多页合成...

    用java一维码批量生成(条码)图片

    4. 图片质量:可以通过设置DPI(每英寸点数)来提高图片质量,防止在打印或扫描时出现问题。 对于压缩包中的“tz_ywm”文件,它可能是作者提供的示例代码或已生成的一维码图片。如果遇到问题,你可以参考这些文件或...

    JAVA 写的批量pdf转换工具,图片处理工具,包括修改jpg分辨率,去扫描件黑边等工具集合,图形界面,主程序已编译为.exe格式,方便运行。

    java swing 采用C/S架构编写的工具集合,包括pdf转换jpg,jpg转pdf,Excel转pdf,合并pdf,批量创建文件夹,根据文件名称创建文件夹,文件批量重命名,根据文件名称移动文件到文件夹,扫描件去黑边,修改jpg图片的...

Global site tag (gtag.js) - Google Analytics