ExifOutputStream eo = new ExifOutputStream( src_exif ); eo.setExifData( exifData ); eo.writeExifData( output );
private void writeAllTags( OrderedDataOutputStream dataOutputStream ) throws IOException { writeIfd( mExifData.getIfdData( IfdId.TYPE_IFD_0 ), dataOutputStream ); writeIfd( mExifData.getIfdData( IfdId.TYPE_IFD_EXIF ), dataOutputStream ); IfdData interoperabilityIfd = mExifData.getIfdData( IfdId.TYPE_IFD_INTEROPERABILITY ); if( interoperabilityIfd != null ) { writeIfd( interoperabilityIfd, dataOutputStream ); } IfdData gpsIfd = mExifData.getIfdData( IfdId.TYPE_IFD_GPS ); if( gpsIfd != null ) { writeIfd( gpsIfd, dataOutputStream ); } IfdData ifd1 = mExifData.getIfdData( IfdId.TYPE_IFD_1 ); if( ifd1 != null ) { writeIfd( mExifData.getIfdData( IfdId.TYPE_IFD_1 ), dataOutputStream ); } }
ArrayList<ExifTag> nullTags = stripNullValueTags( mExifData ); createRequiredIfdAndTag(); int exifSize = calculateAllOffset(); dataOutputStream.writeShort( TIFF_HEADER ); dataOutputStream.writeInt( 8 ); writeAllTags( dataOutputStream ); writeThumbnail( dataOutputStream );
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 int calculateAllOffset() { int offset = TIFF_HEADER_SIZE; IfdData ifd0 = mExifData.getIfdData( IfdId.TYPE_IFD_0 ); offset = calculateOffsetOfIfd( ifd0, offset ); ifd0.getTag( ExifInterface.getTrueTagKey( ExifInterface.TAG_EXIF_IFD ) ).setValue( offset ); offset = calculateOffsetOfIfd( exifIfd, offset ); offset = calculateOffsetOfIfd( interIfd, offset ); if( gpsIfd != null ) { ifd0.getTag( ExifInterface.getTrueTagKey( ExifInterface.TAG_GPS_IFD ) ).setValue( offset ); offset = calculateOffsetOfIfd( gpsIfd, offset ); if( ifd1 != null ) { ifd0.setOffsetToNextIfd( offset ); offset = calculateOffsetOfIfd( ifd1, offset );
ArrayList<ExifTag> nullTags = stripNullValueTags( mExifData ); createRequiredIfdAndTag(); int exifSize = calculateAllOffset(); dataOutputStream.writeShort( TIFF_HEADER ); dataOutputStream.writeInt( 8 ); writeAllTags( dataOutputStream ); writeThumbnail( dataOutputStream );
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 int calculateAllOffset() { int offset = TIFF_HEADER_SIZE; IfdData ifd0 = mExifData.getIfdData( IfdId.TYPE_IFD_0 ); offset = calculateOffsetOfIfd( ifd0, offset ); ifd0.getTag( ExifInterface.getTrueTagKey( ExifInterface.TAG_EXIF_IFD ) ).setValue( offset ); offset = calculateOffsetOfIfd( exifIfd, offset ); offset = calculateOffsetOfIfd( interIfd, offset ); if( gpsIfd != null ) { ifd0.getTag( ExifInterface.getTrueTagKey( ExifInterface.TAG_GPS_IFD ) ).setValue( offset ); offset = calculateOffsetOfIfd( gpsIfd, offset ); if( ifd1 != null ) { ifd0.setOffsetToNextIfd( offset ); offset = calculateOffsetOfIfd( ifd1, offset );
ExifOutputStream eo = new ExifOutputStream( src_exif ); eo.setExifData( exifData ); eo.writeExifData( output );
private void writeAllTags( OrderedDataOutputStream dataOutputStream ) throws IOException { writeIfd( mExifData.getIfdData( IfdId.TYPE_IFD_0 ), dataOutputStream ); writeIfd( mExifData.getIfdData( IfdId.TYPE_IFD_EXIF ), dataOutputStream ); IfdData interoperabilityIfd = mExifData.getIfdData( IfdId.TYPE_IFD_INTEROPERABILITY ); if( interoperabilityIfd != null ) { writeIfd( interoperabilityIfd, dataOutputStream ); } IfdData gpsIfd = mExifData.getIfdData( IfdId.TYPE_IFD_GPS ); if( gpsIfd != null ) { writeIfd( gpsIfd, dataOutputStream ); } IfdData ifd1 = mExifData.getIfdData( IfdId.TYPE_IFD_1 ); if( ifd1 != null ) { writeIfd( mExifData.getIfdData( IfdId.TYPE_IFD_1 ), dataOutputStream ); } }