Search in sources :

Example 11 with FileImageInputStream

use of javax.imageio.stream.FileImageInputStream in project imageio-ext by geosolutions-it.

the class TIFFReadTest method readLZWWithHorizontalDifferencingPredictorOn16Bits.

@Test
public void readLZWWithHorizontalDifferencingPredictorOn16Bits() throws IOException {
    // This image has been created from test.tif using the command:
    // gdal_translate -OT UInt16 -co COMPRESS=LZW -co PREDICTOR=2 test.tif lzwtest.tif
    final File file = TestData.file(this, "lzwtest.tif");
    final TIFFImageReader reader = (TIFFImageReader) new TIFFImageReaderSpi().createReaderInstance();
    FileImageInputStream inputStream = new FileImageInputStream(file);
    try {
        reader.setInput(inputStream);
        BufferedImage image = reader.read(0);
        image.flush();
        image = null;
    } finally {
        if (inputStream != null) {
            inputStream.flush();
            inputStream.close();
        }
        if (reader != null) {
            reader.dispose();
        }
    }
}
Also used : FileImageInputStream(javax.imageio.stream.FileImageInputStream) File(java.io.File) TIFFImageReader(it.geosolutions.imageioimpl.plugins.tiff.TIFFImageReader) TIFFImageReaderSpi(it.geosolutions.imageioimpl.plugins.tiff.TIFFImageReaderSpi) BufferedImage(java.awt.image.BufferedImage) Test(org.junit.Test)

Example 12 with FileImageInputStream

use of javax.imageio.stream.FileImageInputStream 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 13 with FileImageInputStream

use of javax.imageio.stream.FileImageInputStream in project imageio-ext by geosolutions-it.

the class JP2KKakaduQualityLayersWriteTest method write.

private void write(final String inputFileName, final RenderedImage originalImage, final Compression type, final CompressionProfile profile) throws IOException {
    JP2KKakaduImageWriter kakaduWriter = (JP2KKakaduImageWriter) JP2K_WSPI.createWriterInstance();
    ImageReader reader = JP2K_RSPI.createReaderInstance();
    FileImageOutputStream fos = null;
    FileImageInputStream fis = null;
    String suffix;
    switch(type) {
        case NUMERICALLY_LOSSLESS:
            suffix = "NL";
            break;
        case LOSSY:
            suffix = "VL";
            break;
        default:
            suffix = "Lossy";
    }
    final String outputFileName = inputFileName + "rewrittenAs_" + suffix + "_" + profile + ".jp2";
    final File outputFile = new File(outputFileName);
    try {
        fos = new FileImageOutputStream(outputFile);
        kakaduWriter.setOutput(fos);
        JP2KKakaduImageWriteParam param = setupWriteParameter(kakaduWriter, type, profile);
        kakaduWriter.write(null, new IIOImage(originalImage, null, null), param);
        kakaduWriter.dispose();
        kakaduWriter = null;
        fis = new FileImageInputStream(outputFile);
        RenderedImage readBack = ImageReadDescriptor.create(fis, 0, false, false, false, null, null, null, reader, null);
        RenderedImage difference = SubtractDescriptor.create(readBack, originalImage, null);
        double[][] extrema = (double[][]) ExtremaDescriptor.create(difference, null, 1, 1, false, 1, null).getProperty("Extrema");
        if (type == Compression.NUMERICALLY_LOSSLESS) {
            for (int i = 0; i < extrema.length; i++) {
                for (int j = 0; j < extrema[i].length; j++) {
                    assertEquals(extrema[i][j], 0, THRESHOLD);
                }
            }
            LOGGER.info("Numerically LossLess successfull: No differences with " + "respect to the original image");
        } else {
            StringBuilder sb = new StringBuilder("Extrema values on VISUALLY_LOSSLESS (LOSSY)" + " compressions for: " + outputFileName);
            for (int i = 0; i < extrema.length; i++) {
                for (int j = 0; j < extrema[i].length; j++) {
                    sb.append(extrema[i][j]).append(" ");
                }
            }
            LOGGER.info(sb.toString());
        }
    } finally {
        if (fos != null) {
            try {
                fos.close();
            } catch (Throwable t) {
            }
        }
        if (kakaduWriter != null) {
            try {
                kakaduWriter.dispose();
            } catch (Throwable t) {
            }
        }
        if (fis != null) {
            try {
                fis.close();
            } catch (Throwable t) {
            }
        }
        if (reader != null) {
            try {
                reader.dispose();
            } catch (Throwable t) {
            }
        }
    }
}
Also used : FileImageOutputStream(javax.imageio.stream.FileImageOutputStream) IIOImage(javax.imageio.IIOImage) FileImageInputStream(javax.imageio.stream.FileImageInputStream) ImageReader(javax.imageio.ImageReader) RenderedImage(java.awt.image.RenderedImage) File(java.io.File)

Example 14 with FileImageInputStream

use of javax.imageio.stream.FileImageInputStream in project openolat by klemens.

the class ImageHelperImpl method cropImage.

@Override
public boolean cropImage(File image, File cropedImage, Crop cropSelection) {
    try (ImageInputStream imageSrc = new FileImageInputStream(image)) {
        String extension = FileUtils.getFileSuffix(cropedImage.getName());
        SizeAndBufferedImage img = getImage(imageSrc, extension);
        if (img != null) {
            BufferedImage croppedImg = cropTo(img.getImage(), img.getSize(), cropSelection);
            Size size = new Size(cropSelection.getWidth(), cropSelection.getHeight(), false);
            return writeTo(croppedImg, cropedImage, size, extension);
        }
        return false;
    } catch (IOException e) {
        return false;
    } catch (CMMException e) {
        // if the image has wrong EXIF data
        return false;
    }
}
Also used : FileImageInputStream(javax.imageio.stream.FileImageInputStream) Size(org.olat.core.commons.services.image.Size) MemoryCacheImageInputStream(javax.imageio.stream.MemoryCacheImageInputStream) FileImageInputStream(javax.imageio.stream.FileImageInputStream) ImageInputStream(javax.imageio.stream.ImageInputStream) IOException(java.io.IOException) CMMException(java.awt.color.CMMException) BufferedImage(java.awt.image.BufferedImage)

Example 15 with FileImageInputStream

use of javax.imageio.stream.FileImageInputStream in project skin-composer by raeleus.

the class Utils method doesImageFitBox.

public static boolean doesImageFitBox(FileHandle fileHandle, float width, float height) {
    boolean result = false;
    String suffix = fileHandle.extension();
    Iterator<ImageReader> iter = ImageIO.getImageReadersBySuffix(suffix);
    if (iter.hasNext()) {
        ImageReader reader = iter.next();
        try (var stream = new FileImageInputStream(fileHandle.file())) {
            reader.setInput(stream);
            int imageWidth = reader.getWidth(reader.getMinIndex());
            int imageHeight = reader.getHeight(reader.getMinIndex());
            result = imageWidth < width && imageHeight < height;
        } catch (IOException e) {
            Gdx.app.error(Utils.class.getName(), "error checking image dimensions", e);
        } finally {
            reader.dispose();
        }
    } else {
        Gdx.app.error(Utils.class.getName(), "No reader available to check image dimensions");
    }
    return result;
}
Also used : FileImageInputStream(javax.imageio.stream.FileImageInputStream) MathUtils(com.badlogic.gdx.math.MathUtils) IOException(java.io.IOException) ImageReader(javax.imageio.ImageReader)

Aggregations

FileImageInputStream (javax.imageio.stream.FileImageInputStream)36 File (java.io.File)22 BufferedImage (java.awt.image.BufferedImage)19 IOException (java.io.IOException)16 ImageInputStream (javax.imageio.stream.ImageInputStream)15 ImageReader (javax.imageio.ImageReader)14 Test (org.junit.Test)14 MemoryCacheImageInputStream (javax.imageio.stream.MemoryCacheImageInputStream)10 TIFFImageReaderSpi (it.geosolutions.imageioimpl.plugins.tiff.TIFFImageReaderSpi)9 TIFFImageReader (it.geosolutions.imageioimpl.plugins.tiff.TIFFImageReader)7 RenderedImage (java.awt.image.RenderedImage)7 ImageReadParam (javax.imageio.ImageReadParam)7 Rectangle (java.awt.Rectangle)6 FileImageOutputStream (javax.imageio.stream.FileImageOutputStream)4 CMMException (java.awt.color.CMMException)3 InputStream (java.io.InputStream)3 RandomAccessFile (java.io.RandomAccessFile)3 IIOImage (javax.imageio.IIOImage)3 ImageOutputStream (javax.imageio.stream.ImageOutputStream)3 JPEGImageReaderSpi (com.sun.imageio.plugins.jpeg.JPEGImageReaderSpi)2