Search in sources :

Example 1 with ImageBand

use of it.geosolutions.imageio.plugins.nitronitf.wrapper.ImageWrapper.ImageBand in project imageio-ext by geosolutions-it.

the class WriterTest method testNITFWrite.

@Test
@Ignore
public /**
 * Simple writing code which won't be run. You can use it as a sample on how to
 * setup some writing machinery.
 *
 * @throws IOException
 * @throws NITFException
 */
void testNITFWrite() throws IOException, NITFException {
    // This TEST won't run, you can use it as a sample on how to setup some writing code
    if (!NITFUtilities.isNITFAvailable()) {
        System.out.println("NITF native libs aren't available: skipping tests");
        return;
    }
    final String[] inputFilePaths = new String[] { "/tmp/sampleForNitf.tif" };
    final String[] requestedCrs = new String[] { "EPSG:32638" };
    FileImageInputStream fisi = new FileImageInputStream(new File("/tmp/license.txt"));
    int length = (int) fisi.length();
    byte[] data = new byte[length];
    fisi.read(data);
    // final int j = 0;
    // String inputFilePath = inputFilePaths[0];
    // 
    // final GeoTiffReader gtReader = new GeoTiffReader(new File(inputFilePath));
    // final GridCoverage2D gridCoverage = gtReader.read(null);
    // final RenderedImage ri = gridCoverage.getRenderedImage();
    // Image to be written
    RenderedImage ri = null;
    final int numBands = ri.getSampleModel().getNumBands();
    // Geometry geom = null;
    // ShapeFileWrapper shpWrapper = buildShape(geom);
    LinkedHashMap<String, Map<String, String>> tresMap = new LinkedHashMap<String, Map<String, String>>();
    // //
    // 
    // Populating TaggedRecordExtensions field with "FAKE" values,
    // for testing purposes
    // 
    // //
    NITFImageWriterSpi SPI = new NITFImageWriterSpi();
    final WriteCompression[] compressions = new WriteCompression[] { WriteCompression.NPJE_NL, WriteCompression.EPJE_NL, WriteCompression.NPJE_VL, WriteCompression.EPJE_VL };
    for (int w = 0; w < 4; w++) {
        final NITFImageWriter writer = new NITFImageWriter(SPI);
        final WriteCompression compression = compressions[w];
        String fileName = "/tmp/output_" + (numBands == 1 ? "PAN_" : "MULTI_") + compression.toString() + "_jp2.ntf";
        File nitfFile = new File(fileName);
        HeaderWrapper header = setupDefaultHeaderWrapper();
        Calendar cal = Calendar.getInstance();
        String timeStamp = null;
        synchronized (SDF) {
            // not thread safe
            timeStamp = SDF.format(cal.getTime());
        }
        header.setDateTime(timeStamp);
        List<TextWrapper> texts = new LinkedList<TextWrapper>();
        // Adding 3 text segments
        for (int i = 0; i < 3; i++) {
            TextWrapper text = setupDefaultNITFText();
            if (i > 0) {
                text.setTitle("SAMPLE" + i);
                text.setId("ID" + i);
            }
            text.setTextContent(data);
            texts.add(text);
        }
        header.setTitle(nitfFile.getName());
        NITFImageWriteParam param = new NITFImageWriteParam();
        NITFProperties metadata = new NITFProperties();
        param.setWriteCompression(compression);
        writer.setOutput(nitfFile);
        ImageWrapper image = new ImageWrapper();
        image.setImage(ri);
        image.setSource(DEFAULT_IMAGE_SOURCE);
        image.setTitle(numBands == 1 ? "SamplePanchromaticImagery.ntf" : "SampleMultiSpectralImagery.NTF");
        image.setId(numBands == 1 ? "P100000000" : "M100000000");
        List<String> comments = new ArrayList<String>(5);
        comments.add("The imagery and metadata data has been added ");
        comments.add("for testing purposes");
        comments.add("This is a test comment");
        comments.add("made of 5 lines");
        comments.add("of text.");
        image.setComments(comments);
        image.setCompression(compression);
        image.setDateTime(timeStamp);
        image.setImageCoordinateSystem("G");
        image.setIgeolo("453131173651215453133773651210453133713650902453131113650907");
        image.setImageMagnification("1.0");
        final int nBands = ri.getSampleModel().getNumBands();
        image.setImageCategory(nBands > 1 ? Category.MS : Category.VIS);
        Representation r = nBands > 1 ? Representation.RGB : Representation.MONO;
        String rString = r.toString();
        image.setRepresentation(r);
        ImageBand[] imageBands = new ImageBand[nBands];
        if (nBands == 1) {
            imageBands[0] = new ImageBand("", "" + rString.charAt(0));
        } else {
            for (int i = 0; i < nBands; i++) {
                imageBands[i] = new ImageBand("" + (rString.charAt(i)), "" + (rString.charAt(i)));
            }
        }
        image.setBands(imageBands);
        List<ImageWrapper> imagesWrapper = new ArrayList<ImageWrapper>();
        imagesWrapper.add(image);
        metadata.setHeader(header);
        // metadata.setShape(shpWrapper);
        image.setTres(tresMap);
        metadata.setImagesWrapper(imagesWrapper);
        metadata.setTextsWrapper(texts);
        param.setNitfProperties(metadata);
        writer.write(null, new IIOImage(ri, null, null), param);
        writer.dispose();
    // gtReader.dispose();
    }
}
Also used : ImageBand(it.geosolutions.imageio.plugins.nitronitf.wrapper.ImageWrapper.ImageBand) ArrayList(java.util.ArrayList) LinkedHashMap(java.util.LinkedHashMap) IIOImage(javax.imageio.IIOImage) ImageWrapper(it.geosolutions.imageio.plugins.nitronitf.wrapper.ImageWrapper) WriteCompression(it.geosolutions.imageio.plugins.nitronitf.NITFUtilities.WriteCompression) NITFProperties(it.geosolutions.imageio.plugins.nitronitf.wrapper.NITFProperties) Calendar(java.util.Calendar) NITFImageWriterSpi(it.geosolutions.imageio.plugins.nitronitf.NITFImageWriterSpi) Representation(it.geosolutions.imageio.plugins.nitronitf.wrapper.ImageWrapper.Representation) LinkedList(java.util.LinkedList) FileImageInputStream(javax.imageio.stream.FileImageInputStream) NITFImageWriter(it.geosolutions.imageio.plugins.nitronitf.NITFImageWriter) TextWrapper(it.geosolutions.imageio.plugins.nitronitf.wrapper.TextWrapper) NITFImageWriteParam(it.geosolutions.imageio.plugins.nitronitf.NITFImageWriteParam) HeaderWrapper(it.geosolutions.imageio.plugins.nitronitf.wrapper.HeaderWrapper) RenderedImage(java.awt.image.RenderedImage) File(java.io.File) LinkedHashMap(java.util.LinkedHashMap) Map(java.util.Map) Ignore(org.junit.Ignore) Test(org.junit.Test)

Example 2 with ImageBand

use of it.geosolutions.imageio.plugins.nitronitf.wrapper.ImageWrapper.ImageBand in project imageio-ext by geosolutions-it.

the class NITFImageWriter method setImageBands.

private static void setImageBands(final ImageSubheader subheader, final ImageWrapper imageWrapper) throws NITFException {
    BandInfo[] bandInfos = null;
    final ImageBand[] bands = imageWrapper.getBands();
    if (bands == null || bands.length == 0) {
        throw new IllegalArgumentException("ImageBands must be specified");
    }
    subheader.createBands(bands.length);
    bandInfos = subheader.getBandInfo();
    for (int i = 0; i < bandInfos.length; i++) {
        BandInfo bandInfo = bandInfos[i];
        NITFUtilities.setField("IREPBAND" + i, bandInfo.getRepresentation(), bands[i].getRepresentation());
        // ISUBCAT shouldn't be null for MultiSpectral Imagery
        NITFUtilities.setField("ISUBCAT" + i, bandInfo.getSubcategory(), bands[i].getSubCategory(), imageWrapper.getImageCategory() == Category.MS);
        NITFUtilities.setField("IFC" + i, bandInfo.getImageFilterCondition(), NITFUtilities.Consts.NONE);
        NITFUtilities.setField("NLUTS" + i, bandInfo.getNumLUTs(), NITFUtilities.Consts.ZERO);
    }
}
Also used : BandInfo(nitf.BandInfo) ImageBand(it.geosolutions.imageio.plugins.nitronitf.wrapper.ImageWrapper.ImageBand)

Aggregations

ImageBand (it.geosolutions.imageio.plugins.nitronitf.wrapper.ImageWrapper.ImageBand)2 NITFImageWriteParam (it.geosolutions.imageio.plugins.nitronitf.NITFImageWriteParam)1 NITFImageWriter (it.geosolutions.imageio.plugins.nitronitf.NITFImageWriter)1 NITFImageWriterSpi (it.geosolutions.imageio.plugins.nitronitf.NITFImageWriterSpi)1 WriteCompression (it.geosolutions.imageio.plugins.nitronitf.NITFUtilities.WriteCompression)1 HeaderWrapper (it.geosolutions.imageio.plugins.nitronitf.wrapper.HeaderWrapper)1 ImageWrapper (it.geosolutions.imageio.plugins.nitronitf.wrapper.ImageWrapper)1 Representation (it.geosolutions.imageio.plugins.nitronitf.wrapper.ImageWrapper.Representation)1 NITFProperties (it.geosolutions.imageio.plugins.nitronitf.wrapper.NITFProperties)1 TextWrapper (it.geosolutions.imageio.plugins.nitronitf.wrapper.TextWrapper)1 RenderedImage (java.awt.image.RenderedImage)1 File (java.io.File)1 ArrayList (java.util.ArrayList)1 Calendar (java.util.Calendar)1 LinkedHashMap (java.util.LinkedHashMap)1 LinkedList (java.util.LinkedList)1 Map (java.util.Map)1 IIOImage (javax.imageio.IIOImage)1 FileImageInputStream (javax.imageio.stream.FileImageInputStream)1 BandInfo (nitf.BandInfo)1