Ich werde eine TIFF-Datei in mehrere TIFF-Dateien mit dem Trennzeichen II * teilen müssen, also benutze ich den folgenden Code, um die TIFF-Datei zu base64 zu konvertieren und die Teilzeichenfolge zu verwenden Bild . Allerdings bekomme ich den Fehler wie folgt. Bitte geben Sie an, wie Sie nur das erste Bild aus der TIFF-Datei mit diesem Delimiter II * extrahieren (Base64-Code ist SUkq).Geteilte TIFF-Dateien in mehrere Dateien
Ich bin in der Lage, zu Bild zu dekodieren, ohne die Unterzeichenfolge auszuführen.
Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String index out of range: -1
at java.lang.String.substring(String.java:1954)
at EncodeStringTest.main(EncodeStringTest.java:63)
Klasse Datei
public class EncodeStringTest {
public static void main(String[] args) {
File file = new File("D:\\Users\\Vinoth\\workspace\\image.tif");
try {
/*
* Reading a Image file from file system
*/
FileInputStream imageInFile = new FileInputStream(file);
byte imageData[] = new byte[(int)file.length()];
imageInFile.read(imageData);
/*
* Converting Image byte array into Base64 String
*/
String imageDataString = encodeImage(imageData);
System.out.println(imageDataString);
String result = imageDataString.substring(imageDataString.indexOf("SUkq") + 1, imageDataString.indexOf("SUkq"));
/*
* Converting a Base64 String into Image byte array
*/
System.out.println("Resulted String"+imageDataString);
byte[] imageByteArray = decodeImage(result);
/*
* Write a image byte array into file system
*/
FileOutputStream imageOutFile =
new FileOutputStream("D:\\Users\\Vinoth\\workspace\\image_2.tif");
imageOutFile.write(imageByteArray);
imageInFile.close();
imageOutFile.close();
System.out.println("Image Successfully Manipulated!");
} catch (FileNotFoundException e) {
System.out.println("Image not found" + e);
} catch (IOException ioe) {
System.out.println("Exception while reading the Image " + ioe);
}
}
public static String encodeImage(byte[] imageByteArray){
return Base64.encodeBase64URLSafeString(imageByteArray);
}
public static byte[] decodeImage(String imageDataString) {
return Base64.decodeBase64(imageDataString);
}
}
Können Sie diese Lösung versuchen und lassen Sie mich Ihre Kommentare wissen. https://Stackoverflow.com/a/45583553/7731623 –
Dieser Code wird nicht für mich arbeiten, da meine Datei mehrere TIFF-Dateien in einem einzigen enthält und jeder eine separate Metadaten hat. Der Code liest also nur das erste Bild in meiner Datei. Danke für Ihren Vorschlag, ich habe bereits Lösung gefunden, indem Sie das Bild in Byte-Array konvertieren und jedes Bild Zeichen für Zeichen lesen und einem separaten Ausgabestream zuweisen und den gesamten Stream zu einem einzigen TIFF mit twlevemonkeys TIFF-Writer zusammenführen. – Vinoth