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
This commit is contained in:
parent
05593e6902
commit
fc1980e939
@ -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>
|
||||
|
@ -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";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -33,4 +33,8 @@ public interface PictureData {
|
||||
*/
|
||||
String suggestFileExtension();
|
||||
|
||||
/**
|
||||
* Returns the mime type for the image
|
||||
*/
|
||||
String getMimeType();
|
||||
}
|
@ -120,4 +120,8 @@ public class XSSFPictureData extends POIXMLDocumentPart implements PictureData {
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
public String getMimeType() {
|
||||
return getPackagePart().getContentType();
|
||||
}
|
||||
}
|
||||
|
@ -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();
|
||||
|
@ -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
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user