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
相关推荐
我经常会遇到这样的问题,我用高级点的手机或者单反相机拍照片时,由于图片分辨率非常高,动不动就是几千万像素……所以导致图片文件非常大,占用了很多的磁盘空间,所以我想把这些图片分辨率等比例缩小一点,这样...
在IT行业中,DPI(Dots Per Inch)是衡量...总结,Java中修改图片DPI涉及读取图像、获取和检查元数据、修改或创建新的元数据、以及写入新图像。通过这种方式,我们可以灵活地调整压缩图片的DPI,以适应不同的应用场景。
在Java编程语言中,读取图像的分辨率是一项常见的任务,特别是在处理图形用户界面(GUI)或者图像处理项目时。要实现这一功能,我们需要利用Java的内置库`javax.imageio`和`java.awt.Image`。本篇文章将详细讲解如何...
易语言提取bmp图片dpi,应用在图片的dpi分辨率的读取和修改
总结起来,这个项目是关于使用OpenCV进行图像尺寸调整、容量优化以及DPI设置的实践,它展示了如何在C++环境中结合OpenCV进行图像处理,同时也涉及到了与图像文件格式和元数据相关的知识。通过学习和实践,开发者可以...
在Java编程环境中,读取图片分辨率是一项常见的任务,特别是在处理图像数据或进行图像分析时。为了实现这个功能,开发者通常需要依赖一些库来简化工作。在这个场景中,提到的两个库——`metadata-extractor-2.8.1....
运用javafx制作的UI,批量修改图片的DPI
这个工具的主要功能就是自动调整DPI设置,以确保所有应用程序能在高分屏上以最适合的分辨率运行。它通过智能识别屏幕的物理尺寸和像素密度,然后自动调整系统级别的DPI缩放比例,使得文字、图标和其他用户界面元素...
在Java编程环境中,将多页PDF转换为一张长图图片是一项常见的需求,特别是在文档处理、报表可视化或在线阅读场景中。本项目利用了名为`icepdf`的开源库,其核心组件是`icepdf-core-4.3.3.jar`,这是一个强大的PDF...
java 生成带logo、文本的二维码并修改图片的位深度,不努力的程序员不是一个好的程序员
1. **Java图像库**:Java标准库提供了`java.awt.image`和`javax.imageio`包,它们提供了处理图像的基本功能。例如,`BufferedImage`类用于创建和操作图像,`ImageIO`类则提供了读取、写入和转换图像文件的API。 2. ...
总结一下,Java虽然在处理大型图像时有一些限制,但通过使用`ImageIO`和特定的插件如`TIFFImageReader`,我们可以有效地获取超大图片的分辨率。在处理超过4GB的TIFF文件时,应特别注意内存管理和流式处理,以避免...
<br>在jdk1.6以下的版本环境下,压缩部分图片会很慢,经过我测试,如果图片的DPI越高,速度越慢,一般WEB使用图片DPI都是72,速度很快。大家可以试下。我测试了几张DPI为300,印刷品质的图片,大概要35秒左右,...
在JAVA中可以在正确解析JPEG图像的DPI像素
3. **设置分辨率**:在Java中,分辨率通常是指DPI(每英寸点数)。默认情况下,打印机可能使用的是72DPI或300DPI,但你可以在打印之前通过`PrinterJob`的`setResolution()`方法来调整。需要注意的是,不同的打印机...
3. **设置输出图像格式和质量**:决定要转换成哪种图片格式(JPEG、PNG、BMP等),以及图像的质量和分辨率。这会影响文件大小和图像清晰度。 4. **转换**:调用库提供的方法,如PDFBox的`PDPage.convertToImage()`...
总的来说,Java中的PDF转图片是一个涉及PDF解析、图像渲染和保存的复杂过程。通过使用像IcePDF这样的库,开发者可以方便地在Java应用程序中实现这个功能,为PDF文档提供另一种形式的展示和存储方式。
在上面的代码中,`renderImageWithDPI`方法可以设置输出图片的DPI(每英寸点数),从而控制图片的大小。DPI越高,图片质量越好,但文件体积也会更大。如果需要对PDF进行缩放,可以调整这个参数。 4. **多页合成...
4. 图片质量:可以通过设置DPI(每英寸点数)来提高图片质量,防止在打印或扫描时出现问题。 对于压缩包中的“tz_ywm”文件,它可能是作者提供的示例代码或已生成的一维码图片。如果遇到问题,你可以参考这些文件或...
java swing 采用C/S架构编写的工具集合,包括pdf转换jpg,jpg转pdf,Excel转pdf,合并pdf,批量创建文件夹,根据文件名称创建文件夹,文件批量重命名,根据文件名称移动文件到文件夹,扫描件去黑边,修改jpg图片的...