Se vuoi salvare un BufferedImage basta dire (ad esempio):
ImageIO.write(image, "jpg", new File("c:\\immagine.jpg"));
Il metodo write rilascia un'eccezione di IO nel caso in cui qualcosa vada storto.
Tieni comunque conto che l'array di byte:
captchaChallengeAsJpeg
è già il contenuto di un "file jpg". Quindi puoi saltare la conversione-riconversione e scrivere direttamente su un file il contenuto di captchaChallengeAsJpeg.
Codice:
ByteBuffer data = ByteBuffer.wrap(captchaChallengeAsJpeg);
FileChannel out = new FileOutputStream("c:\\immagine.jpg").getChannel();
try {
while(data.hasRemaining()) { out.write(data); }
} finally {
out.close();
}
PS: quando fai:
BufferedImage image = ImageIO.read(new ByteArrayInputStream(iByteJpg));
"image" non è propriamente la tua immagine jpg ma è l'immagine Java che risulta dall'interpretazione dei byte che, incindentalmente, sono quelli di un'immagine jpg. A parte questo "incidente", non c'è una correlazione tra il formato jpeg e BufferedImage. Tant'è che iByteJpg potrebbe benissimo essere in formato png, bmp o gif.