Revision 5a407e53
Added by Andreas Müller over 3 years ago
app-import/src/main/java/eu/etaxonomy/cdm/io/PalmaeImageImport.java | ||
---|---|---|
18 | 18 |
import java.util.List; |
19 | 19 |
import java.util.Map; |
20 | 20 |
|
21 |
import org.apache.commons.imaging.ImageInfo; |
|
22 |
import org.apache.commons.imaging.ImageReadException; |
|
23 |
import org.apache.commons.imaging.Imaging; |
|
24 |
import org.apache.commons.imaging.common.GenericImageMetadata.GenericImageMetadataItem; |
|
25 |
import org.apache.commons.imaging.common.ImageMetadata; |
|
26 |
import org.apache.commons.imaging.common.ImageMetadata.ImageMetadataItem; |
|
27 |
import org.apache.commons.imaging.formats.jpeg.JpegImageMetadata; |
|
21 | 28 |
import org.apache.log4j.Logger; |
22 |
import org.apache.sanselan.ImageInfo; |
|
23 |
import org.apache.sanselan.ImageReadException; |
|
24 |
import org.apache.sanselan.Sanselan; |
|
25 |
import org.apache.sanselan.common.IImageMetadata; |
|
26 |
import org.apache.sanselan.common.ImageMetadata.Item; |
|
27 |
import org.apache.sanselan.formats.jpeg.JpegImageMetadata; |
|
28 | 29 |
import org.springframework.stereotype.Component; |
29 | 30 |
|
30 | 31 |
import eu.etaxonomy.cdm.app.images.AbstractImageImporter; |
... | ... | |
90 | 91 |
public String retrieveTaxonNameFromImageMetadata(File imageFile){ |
91 | 92 |
String name = null; |
92 | 93 |
|
93 |
IImageMetadata metadata = null;
|
|
94 |
ImageMetadata metadata = null; |
|
94 | 95 |
|
95 | 96 |
try { |
96 |
metadata = Sanselan.getMetadata(imageFile);
|
|
97 |
metadata = Imaging.getMetadata(imageFile);
|
|
97 | 98 |
} catch (ImageReadException e) { |
98 | 99 |
logger.error("Error reading image" + " in " + imageFile.getName(), e); |
99 | 100 |
} catch (IOException e) { |
... | ... | |
103 | 104 |
if(metadata instanceof JpegImageMetadata){ |
104 | 105 |
JpegImageMetadata jpegMetadata = (JpegImageMetadata) metadata; |
105 | 106 |
|
106 |
for (Object object : jpegMetadata.getItems()){ |
|
107 |
|
|
108 |
Item item = (Item) object; |
|
109 |
|
|
110 |
if(item.getKeyword().equals("ObjectName")){ |
|
111 |
logger.debug("File: " + imageFile.getName() + ". ObjectName string is: " + item.getText()); |
|
112 |
String[] objectNameSplit = item.getText().split(";"); |
|
113 |
|
|
114 |
try { |
|
115 |
name = objectNameSplit[1].trim(); |
|
116 |
} catch (ArrayIndexOutOfBoundsException e) { |
|
117 |
logger.warn("ObjectNameSplit has no second part: " + item.getText() + " in " + imageFile.getName()); |
|
118 |
//throw e; |
|
119 |
} |
|
120 |
} |
|
107 |
for (ImageMetadataItem metadataItem : jpegMetadata.getItems()){ |
|
108 |
if (metadataItem instanceof GenericImageMetadataItem){ |
|
109 |
GenericImageMetadataItem item = (GenericImageMetadataItem) metadataItem; |
|
110 |
if(item.getKeyword().equals("ObjectName")){ |
|
111 |
logger.debug("File: " + imageFile.getName() + ". ObjectName string is: " + item.getText()); |
|
112 |
String[] objectNameSplit = item.getText().split(";"); |
|
113 |
|
|
114 |
try { |
|
115 |
name = objectNameSplit[1].trim(); |
|
116 |
} catch (ArrayIndexOutOfBoundsException e) { |
|
117 |
logger.warn("ObjectNameSplit has no second part: " + item.getText() + " in " + imageFile.getName()); |
|
118 |
//throw e; |
|
119 |
} |
|
120 |
} |
|
121 |
}else{ |
|
122 |
throw new IllegalStateException("Unsupported ImageMetadataItem type: " + metadataItem.getClass().getName()); |
|
123 |
} |
|
121 | 124 |
} |
122 | 125 |
} |
123 | 126 |
|
... | ... | |
128 | 131 |
private Map<MetaData, String> getMetaData(File imageFile, List<MetaData> metaData){ |
129 | 132 |
HashMap<MetaData, String> result = new HashMap<>(); |
130 | 133 |
|
131 |
IImageMetadata metadata = null;
|
|
134 |
ImageMetadata metadata = null; |
|
132 | 135 |
List<String> metaDataStrings = new ArrayList<>(); |
133 | 136 |
|
134 | 137 |
for (MetaData data: metaData){ |
135 | 138 |
metaDataStrings.add(data.name().toLowerCase()); |
136 | 139 |
} |
137 | 140 |
|
138 |
|
|
139 | 141 |
try { |
140 |
metadata = Sanselan.getMetadata(imageFile);
|
|
142 |
metadata = Imaging.getMetadata(imageFile);
|
|
141 | 143 |
} catch (ImageReadException e) { |
142 | 144 |
logger.error("Error reading image" + " in " + imageFile.getName(), e); |
143 | 145 |
} catch (IOException e) { |
144 | 146 |
logger.error("Error reading file" + " in " + imageFile.getName(), e); |
145 | 147 |
} |
146 | 148 |
|
147 |
|
|
148 |
|
|
149 | 149 |
if(metadata instanceof JpegImageMetadata){ |
150 | 150 |
JpegImageMetadata jpegMetadata = (JpegImageMetadata) metadata; |
151 | 151 |
|
152 |
for (Object object : jpegMetadata.getItems()){ |
|
153 |
Item item = (Item) object; |
|
154 |
|
|
155 |
if(metaDataStrings.contains(item.getKeyword().toLowerCase())){ |
|
156 |
logger.debug("File: " + imageFile.getName() + ". "+ item.getKeyword() +"string is: " + item.getText()); |
|
157 |
result.put(MetaData.valueOf(item.getKeyword().toUpperCase()), item.getText()); |
|
158 |
} |
|
152 |
for (ImageMetadataItem metadataItem : jpegMetadata.getItems()){ |
|
153 |
if (metadataItem instanceof GenericImageMetadataItem){ |
|
154 |
GenericImageMetadataItem item = (GenericImageMetadataItem) metadataItem; |
|
155 |
if(metaDataStrings.contains(item.getKeyword().toLowerCase())){ |
|
156 |
logger.debug("File: " + imageFile.getName() + ". "+ item.getKeyword() +"string is: " + item.getText()); |
|
157 |
result.put(MetaData.valueOf(item.getKeyword().toUpperCase()), item.getText()); |
|
158 |
} |
|
159 |
}else{ |
|
160 |
throw new IllegalStateException("Unsupported ImageMetadataItem type: " + metadataItem.getClass().getName()); |
|
161 |
} |
|
159 | 162 |
} |
160 | 163 |
} |
161 | 164 |
|
... | ... | |
213 | 216 |
//MetaDataFactory metaDataFactory = MetaDataFactory.getInstance(); |
214 | 217 |
//ImageMetaData imageMetaData = (ImageMetaData) metaDataFactory.readMediaData(file.toURI(), MimeType.IMAGE); |
215 | 218 |
try{ |
216 |
ImageInfo imageinfo = Sanselan.getImageInfo(file);
|
|
219 |
ImageInfo imageinfo = Imaging.getImageInfo(file);
|
|
217 | 220 |
|
218 | 221 |
String mimeType = imageinfo.getMimeType(); |
219 | 222 |
String suffix = "jpg"; |
Also available in: Unified diff
update image imports to new apache commons imaging