Package com.drew.lang

Examples of com.drew.lang.SequentialReader


        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


    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

        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

TOP

Related Classes of com.drew.lang.SequentialReader

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.