OrderedDataOutputStream dataOutputStream = new OrderedDataOutputStream( outputStream ); dataOutputStream.setByteOrder( ByteOrder.BIG_ENDIAN ); dataOutputStream.write( 0xFF ); dataOutputStream.write( JpegHeader.TAG_M_EXIF ); dataOutputStream.writeShort( (short) ( exifSize + 8 ) ); dataOutputStream.writeInt( EXIF_HEADER ); dataOutputStream.writeShort( (short) 0x0000 ); if( mExifData.getByteOrder() == ByteOrder.BIG_ENDIAN ) { dataOutputStream.writeShort( TIFF_BIG_ENDIAN ); dataOutputStream.writeShort( TIFF_LITTLE_ENDIAN ); dataOutputStream.setByteOrder( mExifData.getByteOrder() ); dataOutputStream.writeShort( TIFF_HEADER ); dataOutputStream.writeInt( 8 ); writeAllTags( dataOutputStream ); dataOutputStream.flush();
if( buf.length == tag.getComponentCount() ) { buf[buf.length - 1] = 0; dataOutputStream.write( buf ); dataOutputStream.write( buf ); dataOutputStream.write( 0 ); case ExifTag.TYPE_UNSIGNED_LONG: for( int i = 0, n = tag.getComponentCount(); i < n; i++ ) { dataOutputStream.writeInt( (int) tag.getValueAt( i ) ); case ExifTag.TYPE_UNSIGNED_RATIONAL: for( int i = 0, n = tag.getComponentCount(); i < n; i++ ) { dataOutputStream.writeRational( tag.getRational( i ) ); buf = new byte[tag.getComponentCount()]; tag.getBytes( buf ); dataOutputStream.write( buf ); break; case ExifTag.TYPE_UNSIGNED_SHORT: for( int i = 0, n = tag.getComponentCount(); i < n; i++ ) { dataOutputStream.writeShort( (short) tag.getValueAt( i ) );
private void writeIfd( IfdData ifd, OrderedDataOutputStream dataOutputStream ) throws IOException { ExifTag[] tags = ifd.getAllTags(); dataOutputStream.writeShort( (short) tags.length ); for( ExifTag tag : tags ) { dataOutputStream.writeShort( tag.getTagId() ); dataOutputStream.writeShort( tag.getDataType() ); dataOutputStream.writeInt( tag.getComponentCount() ); // Log.v( TAG, "\n" + tag.toString() ); if( tag.getDataSize() > 4 ) { dataOutputStream.writeInt( tag.getOffset() ); } else { ExifOutputStream.writeTagValue( tag, dataOutputStream ); for( int i = 0, n = 4 - tag.getDataSize(); i < n; i++ ) { dataOutputStream.write( 0 ); } } } dataOutputStream.writeInt( ifd.getOffsetToNextIfd() ); for( ExifTag tag : tags ) { if( tag.getDataSize() > 4 ) { ExifOutputStream.writeTagValue( tag, dataOutputStream ); } } }
private void writeThumbnail( OrderedDataOutputStream dataOutputStream ) throws IOException { if( mExifData.hasCompressedThumbnail() ) { Log.d( TAG, "writing thumbnail.." ); dataOutputStream.write( mExifData.getCompressedThumbnail() ); } else if( mExifData.hasUncompressedStrip() ) { Log.d( TAG, "writing uncompressed strip.." ); for( int i = 0; i < mExifData.getStripCount(); i++ ) { dataOutputStream.write( mExifData.getStrip( i ) ); } } }
if( buf.length == tag.getComponentCount() ) { buf[buf.length - 1] = 0; dataOutputStream.write( buf ); dataOutputStream.write( buf ); dataOutputStream.write( 0 ); case ExifTag.TYPE_UNSIGNED_LONG: for( int i = 0, n = tag.getComponentCount(); i < n; i++ ) { dataOutputStream.writeInt( (int) tag.getValueAt( i ) ); case ExifTag.TYPE_UNSIGNED_RATIONAL: for( int i = 0, n = tag.getComponentCount(); i < n; i++ ) { dataOutputStream.writeRational( tag.getRational( i ) ); buf = new byte[tag.getComponentCount()]; tag.getBytes( buf ); dataOutputStream.write( buf ); break; case ExifTag.TYPE_UNSIGNED_SHORT: for( int i = 0, n = tag.getComponentCount(); i < n; i++ ) { dataOutputStream.writeShort( (short) tag.getValueAt( i ) );
private void writeIfd( IfdData ifd, OrderedDataOutputStream dataOutputStream ) throws IOException { ExifTag[] tags = ifd.getAllTags(); dataOutputStream.writeShort( (short) tags.length ); for( ExifTag tag : tags ) { dataOutputStream.writeShort( tag.getTagId() ); dataOutputStream.writeShort( tag.getDataType() ); dataOutputStream.writeInt( tag.getComponentCount() ); // Log.v( TAG, "\n" + tag.toString() ); if( tag.getDataSize() > 4 ) { dataOutputStream.writeInt( tag.getOffset() ); } else { ExifOutputStream.writeTagValue( tag, dataOutputStream ); for( int i = 0, n = 4 - tag.getDataSize(); i < n; i++ ) { dataOutputStream.write( 0 ); } } } dataOutputStream.writeInt( ifd.getOffsetToNextIfd() ); for( ExifTag tag : tags ) { if( tag.getDataSize() > 4 ) { ExifOutputStream.writeTagValue( tag, dataOutputStream ); } } }
private void writeThumbnail( OrderedDataOutputStream dataOutputStream ) throws IOException { if( mExifData.hasCompressedThumbnail() ) { Log.d( TAG, "writing thumbnail.." ); dataOutputStream.write( mExifData.getCompressedThumbnail() ); } else if( mExifData.hasUncompressedStrip() ) { Log.d( TAG, "writing uncompressed strip.." ); for( int i = 0; i < mExifData.getStripCount(); i++ ) { dataOutputStream.write( mExifData.getStrip( i ) ); } } }
OrderedDataOutputStream dataOutputStream = new OrderedDataOutputStream( outputStream ); dataOutputStream.setByteOrder( ByteOrder.BIG_ENDIAN ); dataOutputStream.write( 0xFF ); dataOutputStream.write( JpegHeader.TAG_M_EXIF ); dataOutputStream.writeShort( (short) ( exifSize + 8 ) ); dataOutputStream.writeInt( EXIF_HEADER ); dataOutputStream.writeShort( (short) 0x0000 ); if( mExifData.getByteOrder() == ByteOrder.BIG_ENDIAN ) { dataOutputStream.writeShort( TIFF_BIG_ENDIAN ); dataOutputStream.writeShort( TIFF_LITTLE_ENDIAN ); dataOutputStream.setByteOrder( mExifData.getByteOrder() ); dataOutputStream.writeShort( TIFF_HEADER ); dataOutputStream.writeInt( 8 ); writeAllTags( dataOutputStream ); dataOutputStream.flush();