TwelveMonkeys 3.1.1:PSD文件ImageIO.read给出java.io.EOFException:包比特流意外结束

TwelveMonkeys 3.1.1:PSD文件ImageIO.read给出java.io.EOFException:包比特流意外结束,java,twelvemonkeys,Java,Twelvemonkeys,我正在尝试转换一个PSD文件(大小为500+MB),该文件会导致以下异常: java.io.EOFException: Unexpected end of PackBits stream at com.twelvemonkeys.io.enc.PackBitsDecoder.readFully(Unknown Source) at com.twelvemonkeys.io.enc.PackBitsDecoder.decode(Unknown Source) at com.

我正在尝试转换一个PSD文件(大小为500+MB),该文件会导致以下异常:

java.io.EOFException: Unexpected end of PackBits stream
    at com.twelvemonkeys.io.enc.PackBitsDecoder.readFully(Unknown Source)
    at com.twelvemonkeys.io.enc.PackBitsDecoder.decode(Unknown Source)
    at com.twelvemonkeys.io.enc.DecoderStream.fill(Unknown Source)
    at com.twelvemonkeys.io.enc.DecoderStream.read(Unknown Source)
    at java.io.DataInputStream.readShort(DataInputStream.java:313)
    at com.twelvemonkeys.imageio.plugins.psd.PSDImageReader.read16bitChannel(Unknown Source)
    at com.twelvemonkeys.imageio.plugins.psd.PSDImageReader.readImageData(Unknown Source)
    at com.twelvemonkeys.imageio.plugins.psd.PSDImageReader.read(Unknown Source)
    at javax.imageio.ImageIO.read(ImageIO.java:1448)
    at javax.imageio.ImageIO.read(ImageIO.java:1308)
有谁能提出一个解决方案吗?或者,至少是它产生这种异常的原因(可能是更新版本的photoshop?)

更新:

以下是我使用的PSD文件的链接:

好的,问题是:

所讨论的PSD是每个样本16位,并使用PackBits压缩。出于某种原因,我还没有使用这种特定配置的测试样本,所以有一个bug已经存在很多年了

对于PackBits压缩的PSD,在文件的开头有一个每行字节数的列表(我想是为了更容易随机访问)。对于16位的样本,这个值乘以2,对于32位的样本,这个值乘以4,但是很明显,一个字节计数就是一个字节计数,不管样本是2还是4个字节

现在,当我改变这一点,图像读取没有错误。然而,该PSD似乎在存储时没有“合并”层(这是大多数声称读取PSD的软件能够显示的),但它有7个通道,其中4个是alpha通道。当我打开它时,它几乎是透明的(在OSX的预览中打开时,它是透明的)


上述修复现在被推送到GitHub上的主分支。

请附加(链接)有问题的文件,我会告诉您。;-)嘿@haraldK,谢谢你的回复。我已经附加了一个链接到PSD文件,我试图转换。此外,我正在将Java8与TwelveMonkeys 3.1.1一起使用。请告诉我,如果有任何其他信息,我可以提供,以帮助你分析问题。你能打开这个PSD文件在Photoshop?至少我无法在OSX的任何标准工具(如预览)中(正确)打开此文件。在我看来,文件好像已经损坏了。哦,我明白了。实际上,我可以在PhotoshopCS6(扩展版)中打开此文件。如果您使用的任何工具都无法打开它,那么这就是原因。你能说出你在机器上使用的工具吗?事实上,我认为这可能是代码中的一个错误。我正在调查。。。