Package com.drew.lang

Examples of com.drew.lang.SequentialByteArrayReader


        JpegDirectory directory = metadata.getOrCreateDirectory(JpegDirectory.class);

        // The value of TAG_COMPRESSION_TYPE is determined by the segment type found
        directory.setInt(JpegDirectory.TAG_COMPRESSION_TYPE, segmentType.byteValue - JpegSegmentType.SOF0.byteValue);

        SequentialReader reader = new SequentialByteArrayReader(segmentBytes);

        try {
            directory.setInt(JpegDirectory.TAG_DATA_PRECISION, reader.getUInt8());
            directory.setInt(JpegDirectory.TAG_IMAGE_HEIGHT, reader.getUInt16());
            directory.setInt(JpegDirectory.TAG_IMAGE_WIDTH, reader.getUInt16());
            short componentCount = reader.getUInt8();
            directory.setInt(JpegDirectory.TAG_NUMBER_OF_COMPONENTS, componentCount);

            // for each component, there are three bytes of data:
            // 1 - Component ID: 1 = Y, 2 = Cb, 3 = Cr, 4 = I, 5 = Q
            // 2 - Sampling factors: bit 0-3 vertical, 4-7 horizontal
            // 3 - Quantization table number
            for (int i = 0; i < (int)componentCount; i++) {
                final int componentId = reader.getUInt8();
                final int samplingFactorByte = reader.getUInt8();
                final int quantizationTableNumber = reader.getUInt8();
                final JpegComponent component = new JpegComponent(componentId, samplingFactorByte, quantizationTableNumber);
                directory.setObject(JpegDirectory.TAG_COMPONENT_DATA_1 + i, component);
            }

        } catch (IOException ex) {
View Full Code Here


        return segmentBytes.length == 12 && "Adobe".equalsIgnoreCase(new String(segmentBytes, 0, 5));
    }

    public void extract(@NotNull byte[] segmentBytes, @NotNull Metadata metadata, @NotNull JpegSegmentType segmentType)
    {
        extract(new SequentialByteArrayReader(segmentBytes), metadata);
    }
View Full Code Here

    {
        if (bytes.length != 8 * 4) {
            throw new PngProcessingException("Invalid number of bytes");
        }

        SequentialByteArrayReader reader = new SequentialByteArrayReader(bytes);
        try {
            _whitePointX = reader.getInt32();
            _whitePointY = reader.getInt32();
            _redX = reader.getInt32();
            _redY = reader.getInt32();
            _greenX = reader.getInt32();
            _greenY = reader.getInt32();
            _blueX = reader.getInt32();
            _blueY = reader.getInt32();
        } catch (IOException ex) {
            throw new PngProcessingException(ex);
        }
    }
View Full Code Here

    public PngHeader(@NotNull byte[] bytes) throws PngProcessingException
    {
        if (bytes.length != 13) {
            throw new PngProcessingException("PNG header chunk must have 13 data bytes");
        }
        SequentialReader reader = new SequentialByteArrayReader(bytes);
        try {
            _imageWidth = reader.getInt32();
            _imageHeight = reader.getInt32();
            _bitsPerSample = reader.getInt8();
            byte colorTypeNumber = reader.getInt8();
            PngColorType colorType = PngColorType.fromNumericValue(colorTypeNumber);
            if (colorType == null) {
                throw new PngProcessingException("Unexpected PNG color type: " + colorTypeNumber);
            }
            _colorType = colorType;
            _compressionType = reader.getInt8();
            _filterMethod = reader.getInt8();
            _interlaceMethod = reader.getInt8();
        } catch (IOException e) {
            // Should never happen
            throw new PngProcessingException(e);
        }
    }
View Full Code Here

                directory.setByteArray(tagType, tagBytes);

                // TODO allow rebasing the reader with a new zero-point, rather than copying data here
                if (tagType == PhotoshopDirectory.TAG_IPTC)
                    new IptcReader().extract(new SequentialByteArrayReader(tagBytes), metadata, tagBytes.length);

                if (tagType >= 0x0fa0 && tagType <= 0x1387)
                    PhotoshopDirectory._tagNameMap.put(tagType, String.format("Plug-in %d Data", tagType - 0x0fa0 + 1));
            } catch (IOException ex) {
                directory.addError(ex.getMessage());
View Full Code Here

        return segmentBytes.length != 0 && segmentBytes[0] == 0x1c;
    }

    public void extract(@NotNull byte[] segmentBytes, @NotNull Metadata metadata, @NotNull JpegSegmentType segmentType)
    {
        extract(new SequentialByteArrayReader(segmentBytes), metadata, segmentBytes.length);
    }
View Full Code Here

        byte[] bytes = _directory.getByteArray(PngDirectory.TAG_BACKGROUND_COLOR);
        Integer colorType = _directory.getInteger(PngDirectory.TAG_COLOR_TYPE);
        if (bytes == null || colorType == null) {
            return null;
        }
        SequentialReader reader = new SequentialByteArrayReader(bytes);
        try {
            // TODO do we need to normalise these based upon the bit depth?
            switch (colorType) {
                case 0:
                case 4:
                    return String.format("Greyscale Level %d", reader.getUInt16());
                case 2:
                case 6:
                    return String.format("R %d, G %d, B %d", reader.getUInt16(), reader.getUInt16(), reader.getUInt16());
                case 3:
                    return String.format("Palette Index %d", reader.getUInt8());
            }
        } catch (IOException ex) {
            return null;
        }
        return null;
View Full Code Here

        }
    }

    private void processCameraSettings(byte[] bytes)
    {
        SequentialByteArrayReader reader = new SequentialByteArrayReader(bytes);
        reader.setMotorolaByteOrder(true);

        int count = bytes.length / 4;

        try {
            for (int i = 0; i < count; i++) {
                int value = reader.getInt32();
                setInt(CameraSettings.OFFSET + i, value);
            }
        } catch (IOException e) {
            // Should never happen, given that we check the length of the bytes beforehand.
            e.printStackTrace();
View Full Code Here

        byte[] thumbData = directory.getThumbnailData();
        assertNotNull(thumbData);
        try {
            // attempt to read the thumbnail -- it should be a legal Jpeg file
            JpegSegmentReader.readSegments(new SequentialByteArrayReader(thumbData), null);
        } catch (JpegProcessingException e) {
            Assert.fail("Unable to construct JpegSegmentReader from thumbnail data");
        }
    }
View Full Code Here

{
    @NotNull
    public static AdobeJpegDirectory processBytes(@NotNull String filePath) throws IOException
    {
        Metadata metadata = new Metadata();
        new AdobeJpegReader().extract(new SequentialByteArrayReader(FileUtil.readBytes(filePath)), metadata);

        AdobeJpegDirectory directory = metadata.getDirectory(AdobeJpegDirectory.class);
        assertNotNull(directory);
        return directory;
    }
View Full Code Here

TOP

Related Classes of com.drew.lang.SequentialByteArrayReader

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.