Project

General

Profile

« Previous | Next » 

Revision 5a407e53

Added by Andreas Müller over 3 years ago

update image imports to new apache commons imaging

View differences:

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