Ver Mensaje Individual
  #7 (permalink)  
Antiguo 25/03/2012, 15:17
marroneti
 
Fecha de Ingreso: febrero-2012
Mensajes: 6
Antigüedad: 12 años, 2 meses
Puntos: 0
Respuesta: Unir ficheros

Bueno si a alguien le interesa ya lo tengo. Bueno yo no tengo mucho mérito ya que lo único que he hecho es encontrar un código que utiliza el clase JAI_IMAGEIO.JAR con la que hace precisamente lo que trato de hacer. Bueno aquí les dejo el código:

import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import javax.imageio.IIOImage;
import javax.imageio.ImageIO;
import javax.imageio.ImageReader;
import javax.imageio.ImageWriter;
import javax.imageio.stream.ImageInputStream;
import javax.imageio.stream.ImageOutputStream;

class JAIprueba {

public static void concateTiff(String[] inputTiffs, String outputTiff) {
List<IIOImage> imageList = new ArrayList<IIOImage>();
ImageInputStream tiffStream = null;
IIOImage tiffImage = null;

try {
// locate a TIFF reader
System.out.println(inputTiffs[0]);
Iterator<ImageReader> tiffReaders = ImageIO.getImageReadersByFormatName("TIF");
if (!tiffReaders.hasNext())
throw new IllegalStateException("No TIFF reader found");
ImageReader tiffReader = tiffReaders.next();

for (int i = 0; i < inputTiffs.length; i++) {
System.out.println("image-" + i);
// point it to our image file
tiffStream = ImageIO.createImageInputStream(new File(inputTiffs[i]));
tiffReader.setInput(tiffStream);
// read pages until end of image from the TIFF file
try {
for (int index = 0;; index++) {
tiffImage = tiffReader.readAll(index, tiffReader.getDefaultReadParam());
imageList.add(tiffImage);
}
} catch (IndexOutOfBoundsException ex) {
System.out.println("page limit crossed!");
}
}

Iterator<ImageWriter> writers = ImageIO.getImageWritersByFormatName("tiff");
ImageWriter writer = writers.next();
ImageOutputStream ios = ImageIO.createImageOutputStream(new File(outputTiff));
writer.setOutput(ios);

IIOImage firstIioImage = imageList.remove(0);
writer.write(firstIioImage);
int i = 1;
for (IIOImage iioImage : imageList) {
writer.writeInsert(i++, iioImage, null);
}
ios.close();
tiffStream.close();
} catch (IOException e) {
System.out.println("error merging tiff. Msg=" + e.getMessage());
}
}

public static void main(String Args[]){

concateTiff(Args, "C:\\resultado.TIF");
}
}

Bueno saludos a todos y especial a Xerelo que fue el que más me ha ayudado.