我有一个不同的需求。我收到的是作为二进制文本的TIFF图像。我不知道是否可以称之为二进制文本。该文本包含像下面所示的非ASCII字符。
0ÎÀi7°®èý¯Â£ôîÀk1 ü"»£ð‚£Ê£ðü»£ö¿
ŒGÓº?¬hÄr€kðŠîÂ
ŒG*Àkð
¸z «ÿ*ëÿ¢^˾6‚¢êZÒáÿì)eì"‚("¿ÿ€jPšÄ0?<À@Ã\=>P€ª ê¨Eý5?J†¤=oöÃ|(0Ã6ª™P†!*¯Ä0ÿ*¢uÝ¡0Šjþ &&—ÿ
+§¾È°Ã¡-s§‚2“³˜©Î{é¾pªXp%&ì;PËæ™4ºfŒ˜Îÿ Éû½)¨ŽV“þp¦IÇG˜bþñÿÿi•¼
因此,我试图使用以下代码使用ImageIO读取此文本,但它会抛出错误。
String str = "Binary Mentioned Above";
byte[] b = str.getBytes();
ByteArrayInputStream in = new ByteArrayInputStream(b);
BufferedImage bImageFromConvert = ImageIO.read(in);
TIFFEncodeParam params = new TIFFEncodeParam();
File myNewTIFF_File = new File("C:\\Projects\\test\\combined.tif");
ImageIO.write(bImageFromConvert, "TIFF", myNewTIFF_File);
我收到的错误消息是:
Exception in thread "main" java.lang.IllegalArgumentException: image == null!
浏览帖子后,我发现并非所有的TIF文件都能用ImageIO读取。因此,我使用了一个在线代码,基本上是将TIF转换为PDF。
public static String ImageToPDF(byte[] bytes, String pathFile) {
String fileName= pathFile + ".pdf";
Document document = null;
document = new Document();
try {
FileOutputStream fos = new FileOutputStream(fileName);
PdfWriter writer = PdfWriter.getInstance(document, fos);
writer.open();
document.open();
// Array of bytes we have read from the Binary file
RandomAccessFileOrArray ra = new RandomAccessFileOrArray(bytes);
System.out.println("ra ---- "+ra);
// Get the number of pages the the binary file have inside
int numberOfPages = TiffImage.getNumberOfPages(ra);
System.out.println("numberOfPages ------------ "+numberOfPages);
// Loop through numberOfPages and add them on the document
// one by one
for(int page = 1; page <= numberOfPages; page ++){
Image image = TiffImage.getTiffImage(new RandomAccessFileOrArray(bytes),page);
image.scaleAbsolute(500, 500);
document.add(image);
}
document.close();
writer.close();
} catch (Exception e) {
e.printStackTrace();
}
return fileName;
}
public static void main(String[] args) throws IOException{
File imgFront = new File("C:\\Projects\\newtest.txt");
byte[] fileContent = Files.readAllBytes(imgFront.toPath());
//fileContent = File
ImageToPDF(fileContent,"C:\\Projects\\pdfWithImage");
}
我得到了一个错误,错误为“Bad endianness tag (not 0x4949 or 0x4d4d)”。这个错误出现在这一行代码中:“TiffImage.getNumberOfPages(ra);”当我尝试读取Tiff中的页面时。我使用Mirth工具验证了一个tiff文件的二进制文本并且确认该tiff文件是有效的。我已经无法解决这个问题了。任何帮助都将不胜感激。
IllegalArgumentException
异常? - Freiheit