Tag: tiff

如何从ImageIO中排除特定的TIFF阅读器?

堆: Java – 1.8.0_91 斯卡拉 – 2.11.8 图书馆 – it.geosolutions.imageio-ext imageio-ext-tiff 1.1.15 我们正在阅读许多旧的TIF图像,并且出于某种原因,读取是高度不一致的 – 由于某些原因,在不同的运行中读取相同的图像可能成功或失败,例外 – javax.imageio.IIOException: Invalid component ID 3 in SOS at com.sun.imageio.plugins.jpeg.JPEGImageReader.readImage(Native Method) at com.sun.imageio.plugins.jpeg.JPEGImageReader.readInternal(JPEGImageReader.java:1236) at com.sun.imageio.plugins.jpeg.JPEGImageReader.read(JPEGImageReader.java:1039) at com.sun.media.imageioimpl.plugins.tiff.TIFFOldJPEGDecompressor.decodeRaw(TIFFOldJPEGDecompressor.java:654) at com.sun.media.imageio.plugins.tiff.TIFFDecompressor.decode(TIFFDecompressor.java:2527) at com.sun.media.imageioimpl.plugins.tiff.TIFFImageReader.decodeTile(TIFFImageReader.java:1137) at com.sun.media.imageioimpl.plugins.tiff.TIFFImageReader.read(TIFFImageReader.java:1417) 代码是这样的: import java.io.{ByteArrayInputStream, ByteArrayOutputStream} import javax.imageio.ImageIO def convertToPng(data: Array[Byte]): Array[Byte] = { val inputStream = new ByteArrayInputStream(data) […]

在Tiff的getImageWritersByFormatName中出现问题。 获得图像编写者

我正在尝试将PDF转换为tif图像。 我使用以下代码来按格式获取图像编写器。 Iterator writers = ImageIO.getImageWritersByFormatName(“TIFF”); if (writers == null || !writers.hasNext()) { throw new ImageWritingException(); } 当我在Eclipse中独立运行应用程序时,这很好用。 但是当我将应用程序部署到linux中的tomcat服务器时, writers == null为false但是!writers.hasNext为true导致抛出exception。 我使用maven来构建战争项目。 我在pom文件中有以下依赖项。 org.icepdf icepdf-core com.sun.media jai_imageio com.sun.media jai-codec javax.media jai_core 两种环境之间有什么区别? 我该如何解决这个问题?

在java中缩放多页TIFF图像

我想更改多页TIFF图像的高度,所以我使用下面的代码片段来缩放它。 但它只从tiff文件返回第一页,我想它会将其转换为JPEG图像。 如何保留文件的所有页面? public static byte[] scale(byte[] fileData, int width, int height) { System.out.println(“width:::”+width+”::::height:::”+height); ByteArrayInputStream in = new ByteArrayInputStream(fileData); ByteArrayOutputStream buffer=null; BufferedImage img=null; BufferedImage imageBuff=null; try { ImageInputStream imageStream = ImageIO.createImageInputStream(new ByteArrayInputStream(fileData)); java.util.Iterator readers = ImageIO.getImageReaders(imageStream); while(readers.hasNext()) { ImageReader nextImageReader = readers.next(); nextImageReader.reset(); } img = ImageIO.read(in); if(height == 0) { height = (width * […]

Java处理TIF图像

我的问题是,如何在Java中成功将.tif文件加载到Image实例中? 现在让我详细介绍一下。 我已经在stackoverflow上阅读了很多关于如何在Java中处理/转换TIF图像的线程。 我已经尝试了很多stackoverflow建议(我说建议,因为很少有人要求回来说一些有用的东西)。 我很确定我需要使用Java Advanced Imaging(JAI)库,但我认为我不知道如何使用它。 让我现在解释一下这个项目: 我正在处理Processing sketch中的帧屏幕,并使用Xuggler将它们编码为video。 在草图中,我使用Processing的save(文件filePath)函数将当前帧保存到文件中。 我以前有保存(“img”+ i +“。jpg”) ,但是在创建jpg时发生的压缩会使录制速度减慢到9-10fps,所以我切换文件扩展名以查看是否可以改变结果,并且保存(“img”+ i“.tif”)是最快的,允许我以大约22-23fps的速度录制。 处理可以将图像保存为.tif文件。 不幸的是,Java无法在没有库的情况下加载.tif文件。 我以前有代码: Image img = Toolkit.getDefaultToolkit()。getImage(“pics / img”+ i +“。jpg”); 这行代码会将.jpg文件加载到img中,我很乐意对video进行编码。 但这行代码(tif而不是jpg): Image img = Toolkit.getDefaultToolkit()。getImage(“pics / img”+ i +“。tif”); 不会加载任何图像。 我仍然可以使用Xuggler对我的video进行编码,但图像是空白的,所以我认为这种方法无法加载我的.tif文件。 我正在使用Windows 8计算机,并使用Eclipse。 任何帮助将非常感谢!

JAI:如何从多页TIFF图像容器中提取单页输入流?

我有一个组件可以将PDF文档转换为图像, 每页一个图像 。 由于组件使用转换器生成内存中的映像,因此它会严重影响JVM堆并需要一些时间来完成转换。 我正在尝试提高转换过程的整体性能,并找到了一个带有JNI绑定的本机库,可以将PDF转换为TIFF。 该库只能将PDF转换为单个TIFF文件(需要中间文件系统存储;甚至不使用转换流),因此结果TIFF文件已嵌入转换页面,而不是文件系统上的每页图像。 拥有一个本地库可以极大地改善整体转换并且性能变得非常快,但是存在一个真正的瓶颈:因为我必须将源页面转换为目标页面转换,现在我必须从结果文件中提取每个页面并写入其他所有人。 一个简单而天真的RenderedImage方法: final SeekableStream seekableStream = new FileSeekableStream(tempFile); final ImageDecoder imageDecoder = createImageDecoder(“tiff”, seekableStream, null); … // V— heap is wasted here final RenderedImage renderedImage = imageDecoder.decodeAsRenderedImage(pageNumber); // … do the rest stuff … 实际上,我真的只想从TIFF容器文件( tempFile )中提取具体的页面输入流,并将其重定向到其他地方,而不必将其存储为内存中的图像。 我想象一种类似于容器处理的方法,我需要寻找一个特定的条目来从中提取数据(比如像ZIP文件处理等)。 但是我在ImageDecoder找不到类似的ImageDecoder ,或者我可能错了我的期望,只是错过了一些重要的东西…… 是否可以使用JAI API或可能的第三方替代方案提取TIFF容器页面输入流? 提前致谢。

使用Java创建分层Tif以在Photoshop中使用

我很有趣用Photoshop创建一个分层的tif,Photoshop会识别这些层。 我能够创建多页tif ,但Photoshop不会将页面识别为图层。 这些页面可以通过Acrobat查看。 有谁知道Photoshop如何存储tif图层数据以及如何使用Java生成? 谢谢。

使用JAI将swing组件写入大TIFF图像

我有一个大的swing组件写入TIFF。 组件太大而无法在内存中加载TIFF,因此我需要制作一个大的BufferedImage,它由基于磁盘的WritableRaster(如此处所述)支持或使用JAI。 除了项目的完全混乱之外,JAI似乎是更好的答案。 鉴于此,有人可以概述将我的swing组件写入平铺TIFF而不会耗尽内存的步骤吗? 图像大小可能是10000×700 理想情况下,我会创建某种基于磁盘的映像,并将组件的一部分写入其中,每次写入都会刷新到磁盘。 编辑 我想我可以用ImageWriter做到这一点,但是当我调用时,我得到一个NoSuchElementException: ImageWriter imageWriter = ImageIO.getImageWritersByFormatName(“tif”).next(); 我的classpath上有jai_code.jar和jai_core.jarjar子,还有什么我需要做的吗? 编辑我可以使用JAI创建一个非常大的TIFF,但JAI不支持TIFF压缩,因此文件是92 MB。 如果我安装JAI-ImageIO,我可以使用ImageWriter创建一个压缩的TIFF,但只能使用Raster或BufferedImage,而我没有足够的内存。 有没有办法做两步法,使用JAI创建大TIFF,然后压缩大TIFF而不将整个内容加载到内存中?

如何在JAVA中将两个或多个tiff图像文件合并到一个多页tiff图像中

我有5个单页tiff图像。 我想将所有这5个tiff图像组合成一个多页tiff图像。 我正在使用Java Advanced Imaging API。 我已经阅读了SUN提供的JAI API文档和教程。 我是JAI的新手。 我知道基本的核心java。 我不理解SUN的那些文档和文化。 所以朋友请告诉我如何将5个tiff图像文件合并到一个多页tiff图像中。 请给我一些关于上述主题的指导。 我一直在寻找互联网上面的主题,但没有得到任何一个线索。 所以请指导我的朋友们。 提前致谢。

用于读取和写入IPTC元数据到JPEG和TIFF的Java库

有没有人知道一些用于读取和写入 JPEG和TIFF的IPTC元数据的开源Java库? 现在我正在使用Apache Sanselan。 不幸的是,它只能读取IPTC而不能写入( http://commons.apache.org/sanselan/formatsupport.html )。 非常感谢您的帮助。 丹尼斯。

使用Java ImageIO进行Tiff压缩

我在将png转换为tiff时遇到问题。 转换很顺利,但图像很大。 我认为问题是我没有正确地进行压缩? 任何人都有任何建议? 这是代码示例 public static void test() throws IOException { // String fileName = “4958813_1”; String fileName = “4848970_1”; String inFileType = “.PNG”; String outFileType = “.TIFF”; ImageIO.scanForPlugins(); File fInputFile = new File(“I:/HPF/UU/” + fileName + inFileType); InputStream fis = new BufferedInputStream(new FileInputStream( fInputFile)); PNGImageReaderSpi spi = new PNGImageReaderSpi(); ImageReader reader = spi.createReaderInstance(); […]