Java - Imagenes Tiff

   
Vista:

Imagenes Tiff

Publicado por Carlos (3 intervenciones) el 18/02/2013 14:48:30
Buenos días, estoy en un proyecto en el cual debo modificar unas imágenes tiff para agregarle un numero de un radicado. el código que tengo en el momento funciona bien, me agrega el texto, pero la imagen no queda como la imagen original, le cambia el zoom. Si alguien me puede colaborar gracias...

este es el codigo que utilizo

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
public void texto() throws IOException{
		 File file = new File("C:/Pruebas Cadena/tifSources/AA005E57.tif");
	       SeekableStream seekableStream = new FileSeekableStream(file);
	       ImageDecoder decoder = ImageCodec.createImageDecoder("tiff", seekableStream, null);
	       int numPages = decoder.getNumPages();
	       BufferedImage image[]= new BufferedImage[numPages];
	       for(int i=0;i<decoder.getNumPages();i++){
	    	   PlanarImage op1 =    new NullOpImage(decoder.decodeAsRenderedImage(i), null, null, OpImage.OP_IO_BOUND);
 
	    			BufferedImage pg1 = convertRenderedImage(op1);// (new BufferedImage(op1.getWidth(), op1.getHeight(),BufferedImage.TYPE_BYTE_BINARY));
	    			image[i] = pg1;
	    			Graphics2D g2 = image[i].createGraphics();
	    			if (i == 0 ){
		    			Font font = new Font("Helvetica", Font.BOLD, 12);
		    			g2.setColor(Color.black);
		    			g2.setFont(font);
		    			g2.drawString("RADICADO 1234567890214365-D", 25,(float)image[i].getHeight()-25);
	    			}
	    			g2.dispose();
	       }
	       save(image,"C:/Prueb5.tif");
 
	}
 
private static void save(BufferedImage[] b, String tif) throws IOException {
 
		/*
		 * Get a TIFF writer and set its output.
		 */
		Iterator writers = ImageIO.getImageWritersByFormatName("TIFF");
 
		if (writers == null || !writers.hasNext()) {
			throw new RuntimeException("No writers are available.");
		}
 
		FileImageOutputStream fios = new FileImageOutputStream(new File(tif));
 
		ImageWriter writer = (ImageWriter) writers.next();
		writer.setOutput(fios);
		writer.prepareWriteSequence(null);
		ImageWriteParam param = writer.getDefaultWriteParam();
		param.setCompressionMode(ImageWriteParam.MODE_EXPLICIT);
		param.setCompressionType("CCITT T.4");
 
		for (int i = 0; i < b.length; i++) {
			ImageTypeSpecifier imageType = ImageTypeSpecifier.createFromRenderedImage(b[i]);
			IIOMetadata imageMetadata = writer.getDefaultImageMetadata(imageType, param);
			imageMetadata = createImageMetadata(imageMetadata);
			writer.writeToSequence(new IIOImage(b[i], null, imageMetadata),param);
		}
 
		/*
		 * Dispose & Close file
		 */
		writer.endWriteSequence();
		writer.dispose();
		writer = null;
		fios.close();
 
	}
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder