J'utilise com.sun.media.imageioimpl.plugins.tiff.TIFFPackBitsCompressor pour essayer de coder un tableau de tiff octets que j'ai en utilisant PackBits. Je ne suis pas familier avec cette classe et je n'ai pas trouvé beaucoup d'exemples sur la façon de l'utiliser. Mais, en suivant le javadoc, j'ai reçu un NPE chaque fois que j'ai essayé d'encoder mes données. Autant que je puisse voir, aucune de mes valeurs n'est nulle. J'ai essayé ces tests avec plusieurs valeurs à ce stade, mais au-dessous est ma plus récente itération:TIFFPackBitsCompressor - NPE?
TIFFPackBitsCompressor pack = new TIFFPackBitsCompressor();
//bImageFromConvert is a 16-bit BufferedImage with all desired data.
short[] bufferHolder = ((DataBufferUShort) bImageFromConvert.getRaster().getDataBuffer()).getData();
//Since bImageFromConvert is 16-bits, the short array isn't the right length.
//The below conversion handles tihs issue
byte[] byteBuffer = convertShortToByte(bufferHolder);
//I'm not entirely sure what this int[] in the parameters should be.
//For now, it is a test int[] array containing all 1s
int[] testint = new int[byteBuffer.length];
Arrays.fill(testint, 1);
//0 offset. dimWidth = 1760, dimHeight = 2140. Not sure what that last param is supposed to be in layman's terms.
//npe thrown at this line.
int testOut = pack.encode(byteBuffer, 0, dimWidth, dimHeight, testint, 1);
Quelqu'un at-il aperçu de ce qui se passe? Aussi, si disponible, quelqu'un sait-il un meilleur moyen d'encoder mes fichiers TIFF en utilisant PackBits dans un programme Java? Faites-moi savoir s'il y a quelque chose pour clarifier ma question.
Merci!
Où se trouve la trace de la pile? Quoi qu'il en soit, je ne pense pas que vous soyez supposé utiliser le compresseur vous-même, mais plutôt le plugin JAI ImageIO TIFF (le 'TIFFImageWriter') lorsque vous spécifiez" PackBits "comme type de compression dans le fichier' ImageWriteParam'. Vous pouvez également passer une instance de compresseur dans le paramètre param, si vous l'avez convertie en 'TIFFImageWriteParam' en premier, mais ceci est plus utile pour les compressions personnalisées non connues par le plugin. – haraldK