001/* 002 * Licensed to the Apache Software Foundation (ASF) under one or more 003 * contributor license agreements. See the NOTICE file distributed with 004 * this work for additional information regarding copyright ownership. 005 * The ASF licenses this file to You under the Apache License, Version 2.0 006 * (the "License"); you may not use this file except in compliance with 007 * the License. You may obtain a copy of the License at 008 * 009 * http://www.apache.org/licenses/LICENSE-2.0 010 * 011 * Unless required by applicable law or agreed to in writing, software 012 * distributed under the License is distributed on an "AS IS" BASIS, 013 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 014 * See the License for the specific language governing permissions and 015 * limitations under the License. 016 */ 017package org.apache.commons.imaging.formats.webp.chunks; 018 019import java.io.IOException; 020import java.io.PrintWriter; 021 022import org.apache.commons.imaging.ImagingException; 023import org.apache.commons.imaging.common.ImageMetadata; 024import org.apache.commons.imaging.formats.tiff.TiffImageMetadata; 025import org.apache.commons.imaging.formats.tiff.TiffImageParser; 026 027/** 028 * Exif (metadata) chunk. 029 * 030 * <pre>{@code 031 * 0 1 2 3 032 * 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 033 * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 034 * | ChunkHeader('EXIF') | 035 * | | 036 * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 037 * : Exif Metadata : 038 * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 039 * }</pre> 040 * 041 * @see <a href="https://developers.google.com/speed/webp/docs/riff_container#metadata">Extended File Format#Metadata</a> 042 * @since 1.0.0-alpha4 043 */ 044public final class WebPChunkExif extends AbstractWebPChunk { 045 046 /** 047 * Create an Exif chunk. 048 * 049 * @param type chunk type. 050 * @param size chunk size. 051 * @param bytes chunk data. 052 * @throws ImagingException if the chunk data and the size provided do not match. 053 */ 054 public WebPChunkExif(final int type, final int size, final byte[] bytes) throws ImagingException { 055 super(type, size, bytes); 056 } 057 058 @Override 059 public void dump(final PrintWriter pw, final int offset) throws ImagingException, IOException { 060 super.dump(pw, offset); 061 final TiffImageMetadata metadata = (TiffImageMetadata) new TiffImageParser().getMetadata(bytes); 062 for (final ImageMetadata.ImageMetadataItem item : metadata.getItems()) { 063 pw.println(item.toString(" ")); 064 } 065 } 066}