デフリプタII *を使用してTIFFファイルを複数のTIFFファイルに分割する必要があるため、以下のコードを使用してtiffファイルをbase64に変換し、イメージ。しかし、私は以下のようなエラーが表示されます。このデリミタII *(base64コードはSUkq)を使用して、tiffファイルから最初のイメージのみを抽出する方法を教えてください。TIFFファイルを複数のファイルに分割する
サブストリングを実行せずに画像をデコードすることができます。
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)
クラスファイル
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);
}
}、それが明確な文字列"SUkq"
入力で発見されていないというエラーメッセージに基づいて
substring(imageDataString.indexOf("SUkq") + 1, imageDataString.indexOf("SUkq"))
このコードで
このソリューションをお試しいただき、ありがとうございます。 https://stackoverflow.com/a/45583553/7731623 –
私のファイルには1つのファイル内に複数のtiffファイルが含まれていて、それぞれに別々のメタデータがあるので、そのコードは私のためには機能しません。したがって、そのコードはファイル内の最初のイメージだけを読み込みます。おかげでありがとうございました。私はすでにイメージをバイト配列に変換し、文字ごとに各イメージを読み込み、別々の出力ストリームに割り当て、twlevemonkeys tiff writerを使ってすべてのストリームを単一のtiffにマージすることで解決策を見つけました。 – Vinoth