aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/documentation/content/xdocs/status.xml1
-rw-r--r--src/java/org/apache/poi/hssf/usermodel/HSSFPictureData.java29
-rw-r--r--src/java/org/apache/poi/ss/usermodel/PictureData.java4
-rw-r--r--src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFPictureData.java4
-rw-r--r--src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFPictureData.java2
-rw-r--r--src/testcases/org/apache/poi/hssf/usermodel/TestHSSFPictureData.java2
6 files changed, 37 insertions, 5 deletions
diff --git a/src/documentation/content/xdocs/status.xml b/src/documentation/content/xdocs/status.xml
index 135bb70d55..f79a1c7bc9 100644
--- a/src/documentation/content/xdocs/status.xml
+++ b/src/documentation/content/xdocs/status.xml
@@ -34,6 +34,7 @@
<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>
diff --git a/src/java/org/apache/poi/hssf/usermodel/HSSFPictureData.java b/src/java/org/apache/poi/hssf/usermodel/HSSFPictureData.java
index 8ee2010300..158d98c36d 100644
--- a/src/java/org/apache/poi/hssf/usermodel/HSSFPictureData.java
+++ b/src/java/org/apache/poi/hssf/usermodel/HSSFPictureData.java
@@ -81,10 +81,8 @@ public class HSSFPictureData implements PictureData
* @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:
@@ -101,5 +99,26 @@ public class HSSFPictureData implements PictureData
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";
+ }
+ }
}
-
diff --git a/src/java/org/apache/poi/ss/usermodel/PictureData.java b/src/java/org/apache/poi/ss/usermodel/PictureData.java
index a799de88eb..954337829d 100644
--- a/src/java/org/apache/poi/ss/usermodel/PictureData.java
+++ b/src/java/org/apache/poi/ss/usermodel/PictureData.java
@@ -33,4 +33,8 @@ public interface PictureData {
*/
String suggestFileExtension();
+ /**
+ * Returns the mime type for the image
+ */
+ String getMimeType();
} \ No newline at end of file
diff --git a/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFPictureData.java b/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFPictureData.java
index 0454d90855..814ef73354 100644
--- a/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFPictureData.java
+++ b/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFPictureData.java
@@ -120,4 +120,8 @@ public class XSSFPictureData extends POIXMLDocumentPart implements PictureData {
}
return 0;
}
+
+ public String getMimeType() {
+ return getPackagePart().getContentType();
+ }
}
diff --git a/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFPictureData.java b/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFPictureData.java
index 06868d8376..55677e565e 100644
--- a/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFPictureData.java
+++ b/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFPictureData.java
@@ -36,8 +36,10 @@ public final class TestXSSFPictureData extends TestCase {
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();
diff --git a/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFPictureData.java b/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFPictureData.java
index eb7d12ebf5..e351e26690 100644
--- a/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFPictureData.java
+++ b/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFPictureData.java
@@ -57,6 +57,7 @@ public final class TestHSSFPictureData extends TestCase{
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));
@@ -64,6 +65,7 @@ public final class TestHSSFPictureData extends TestCase{
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
}