<changes>
<release version="3.7-beta3" date="2010-??-??">
+ <action dev="poi-developers" type="add">Add getMimeType() method to HSSF/XSSF PictureData, alongside existing file extension</action>
<action dev="poi-developers" type="fix">49887 - allow sheet names longer than 31 chars in XSSF, enforce name uniqueness on the first 31 chars</action>
<action dev="poi-developers" type="fix">49878 - improved API for hiding sheets</action>
<action dev="poi-developers" type="fix">49875 - fixed XSSFWorkbook.createSheet to throw exception if sheet name begins or ends with a single quote (')</action>
* @see #getFormat
* @return 'wmf', 'jpeg' etc depending on the format. never <code>null</code>
*/
- public String suggestFileExtension()
- {
- switch (blip.getRecordId())
- {
+ public String suggestFileExtension() {
+ switch (blip.getRecordId()) {
case EscherMetafileBlip.RECORD_ID_WMF:
return "wmf";
case EscherMetafileBlip.RECORD_ID_EMF:
return "";
}
}
+
+ /**
+ * Returns the mime type for the image
+ */
+ public String getMimeType() {
+ switch (blip.getRecordId()) {
+ case EscherMetafileBlip.RECORD_ID_WMF:
+ return "application/x-wmf";
+ case EscherMetafileBlip.RECORD_ID_EMF:
+ return "application/x-emf";
+ case EscherMetafileBlip.RECORD_ID_PICT:
+ return "image/x-pict";
+ case EscherBitmapBlip.RECORD_ID_PNG:
+ return "image/png";
+ case EscherBitmapBlip.RECORD_ID_JPEG:
+ return "image/jpeg";
+ case EscherBitmapBlip.RECORD_ID_DIB:
+ return "image/bmp";
+ default:
+ return "image/unknown";
+ }
+ }
}
-
*/
String suggestFileExtension();
+ /**
+ * Returns the mime type for the image
+ */
+ String getMimeType();
}
\ No newline at end of file
}
return 0;
}
+
+ public String getMimeType() {
+ return getPackagePart().getContentType();
+ }
}
assertEquals(5, pictures.size());
String[] ext = {"jpeg", "emf", "png", "emf", "wmf"};
+ String[] mimetype = {"image/jpeg", "image/x-emf", "image/png", "image/x-emf", "image/x-wmf"};
for (int i = 0; i < pictures.size(); i++) {
assertEquals(ext[i], pictures.get(i).suggestFileExtension());
+ assertEquals(mimetype[i], pictures.get(i).getMimeType());
}
int num = pictures.size();
assertEquals(192, jpg.getWidth());
assertEquals(176, jpg.getHeight());
assertEquals(HSSFWorkbook.PICTURE_TYPE_JPEG, pict.getFormat());
+ assertEquals("image/jpeg", pict.getMimeType());
} else if (ext.equals("png")){
//try to read image data using javax.imageio.* (JDK 1.4+)
BufferedImage png = ImageIO.read(new ByteArrayInputStream(data));
assertEquals(300, png.getWidth());
assertEquals(300, png.getHeight());
assertEquals(HSSFWorkbook.PICTURE_TYPE_PNG, pict.getFormat());
+ assertEquals("image/png", pict.getMimeType());
} else {
//TODO: test code for PICT, WMF and EMF
}