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 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148
| import java.applet.Applet;
import java.awt.image.BufferedImage;
import java.awt.image.renderable.ParameterBlock;
import java.io.File;
import java.net.URL;
import java.util.Iterator;
import java.util.Locale;
import javax.imageio.IIOImage;
import javax.imageio.ImageIO;
import javax.imageio.ImageWriteParam;
import javax.imageio.ImageWriter;
import javax.imageio.stream.ImageOutputStream;
import javax.media.jai.JAI;
import javax.media.jai.PlanarImage;
import com.sun.media.imageio.plugins.tiff.TIFFImageWriteParam;
public class Fusion extends Applet
{
/**
*
*/
private static final long serialVersionUID = 1L;
String path1;
String path2;
String pathfinal;
PlanarImage input1;
PlanarImage input2;
PlanarImage result;
public void fusion()
{
try{
path1 = "file:///d:/temp/0.tiff";
path2 = "file:///d:/temp/1.tiff";
pathfinal = "d:/temp/fusionfinale";
// Création des images initiales
input1 = JAI.create("url", new URL(path1));
input2 = JAI.create("url", new URL(path2));
result = null;
// Somme des images filtrées
ParameterBlock pb2 = new ParameterBlock();
pb2.addSource(input1);
pb2.addSource(input2);
result = JAI.create("add", pb2, null);
writeTiff(pathfinal+"-add.tiff", result.getAsBufferedImage());
// Somme des images filtrées
pb2 = new ParameterBlock();
pb2.addSource(input1);
pb2.addSource(input2);
result = JAI.create("and", pb2, null);
writeTiff(pathfinal+"-and.tiff", result.getAsBufferedImage());
// Somme des images filtrées
pb2 = new ParameterBlock();
pb2.addSource(input1);
pb2.addSource(input2);
result = JAI.create("max", pb2, null);
writeTiff(pathfinal+"-max.tiff", result.getAsBufferedImage());
}
catch (Exception e)
{
e.printStackTrace();
}
}
final static private void writeTiff(String pathFinal, BufferedImage imageFinale) throws Exception {
// Ecriture d'un fichier TIFF
File tiffFile = new File(pathFinal);
ImageOutputStream ios = null;
ImageWriter writer = null;
Iterator it = ImageIO.getImageWritersByFormatName("TIF");
if (it.hasNext()) {
writer = (ImageWriter)it.next();
} else {
throw new IllegalArgumentException("Impossible de trouver un écrivain de TIFF !");
}
ios = ImageIO.createImageOutputStream(tiffFile);
writer.setOutput(ios);
ImageWriteParam writeParam = new TIFFImageWriteParam(Locale.ENGLISH);
writeParam.setCompressionMode(ImageWriteParam.MODE_EXPLICIT);
writeParam.setCompressionType("PackBits");
IIOImage iioImage = new IIOImage(imageFinale, null, null);
writer.write(null, iioImage, writeParam);
}
} |
Partager