diff options
author | Nick Burch <nick@apache.org> | 2010-09-09 09:28:04 +0000 |
---|---|---|
committer | Nick Burch <nick@apache.org> | 2010-09-09 09:28:04 +0000 |
commit | 8d475c729d0a78b8039ef684f653e65076d384d4 (patch) | |
tree | 9725745cfcdd11b10d46d7a5aa98e36797f5e7aa | |
parent | 6d0d44d0aadf7cbdd9f7047e928449a70bbd428b (diff) | |
download | poi-8d475c729d0a78b8039ef684f653e65076d384d4.tar.gz poi-8d475c729d0a78b8039ef684f653e65076d384d4.zip |
Add getMimeType() method to HSSF/XSSF PictureData, alongside existing file extension
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@995360 13f79535-47bb-0310-9956-ffa450edef68
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 } |