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>
|
<changes>
|
||||||
<release version="3.7-beta3" date="2010-??-??">
|
<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">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">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>
|
<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
|
* @see #getFormat
|
||||||
* @return 'wmf', 'jpeg' etc depending on the format. never <code>null</code>
|
* @return 'wmf', 'jpeg' etc depending on the format. never <code>null</code>
|
||||||
*/
|
*/
|
||||||
public String suggestFileExtension()
|
public String suggestFileExtension() {
|
||||||
{
|
switch (blip.getRecordId()) {
|
||||||
switch (blip.getRecordId())
|
|
||||||
{
|
|
||||||
case EscherMetafileBlip.RECORD_ID_WMF:
|
case EscherMetafileBlip.RECORD_ID_WMF:
|
||||||
return "wmf";
|
return "wmf";
|
||||||
case EscherMetafileBlip.RECORD_ID_EMF:
|
case EscherMetafileBlip.RECORD_ID_EMF:
|
||||||
@ -101,5 +99,26 @@ public class HSSFPictureData implements PictureData
|
|||||||
return "";
|
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();
|
String suggestFileExtension();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns the mime type for the image
|
||||||
|
*/
|
||||||
|
String getMimeType();
|
||||||
}
|
}
|
@ -120,4 +120,8 @@ public class XSSFPictureData extends POIXMLDocumentPart implements PictureData {
|
|||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public String getMimeType() {
|
||||||
|
return getPackagePart().getContentType();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -36,8 +36,10 @@ public final class TestXSSFPictureData extends TestCase {
|
|||||||
|
|
||||||
assertEquals(5, pictures.size());
|
assertEquals(5, pictures.size());
|
||||||
String[] ext = {"jpeg", "emf", "png", "emf", "wmf"};
|
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++) {
|
for (int i = 0; i < pictures.size(); i++) {
|
||||||
assertEquals(ext[i], pictures.get(i).suggestFileExtension());
|
assertEquals(ext[i], pictures.get(i).suggestFileExtension());
|
||||||
|
assertEquals(mimetype[i], pictures.get(i).getMimeType());
|
||||||
}
|
}
|
||||||
|
|
||||||
int num = pictures.size();
|
int num = pictures.size();
|
||||||
|
@ -57,6 +57,7 @@ public final class TestHSSFPictureData extends TestCase{
|
|||||||
assertEquals(192, jpg.getWidth());
|
assertEquals(192, jpg.getWidth());
|
||||||
assertEquals(176, jpg.getHeight());
|
assertEquals(176, jpg.getHeight());
|
||||||
assertEquals(HSSFWorkbook.PICTURE_TYPE_JPEG, pict.getFormat());
|
assertEquals(HSSFWorkbook.PICTURE_TYPE_JPEG, pict.getFormat());
|
||||||
|
assertEquals("image/jpeg", pict.getMimeType());
|
||||||
} else if (ext.equals("png")){
|
} else if (ext.equals("png")){
|
||||||
//try to read image data using javax.imageio.* (JDK 1.4+)
|
//try to read image data using javax.imageio.* (JDK 1.4+)
|
||||||
BufferedImage png = ImageIO.read(new ByteArrayInputStream(data));
|
BufferedImage png = ImageIO.read(new ByteArrayInputStream(data));
|
||||||
@ -64,6 +65,7 @@ public final class TestHSSFPictureData extends TestCase{
|
|||||||
assertEquals(300, png.getWidth());
|
assertEquals(300, png.getWidth());
|
||||||
assertEquals(300, png.getHeight());
|
assertEquals(300, png.getHeight());
|
||||||
assertEquals(HSSFWorkbook.PICTURE_TYPE_PNG, pict.getFormat());
|
assertEquals(HSSFWorkbook.PICTURE_TYPE_PNG, pict.getFormat());
|
||||||
|
assertEquals("image/png", pict.getMimeType());
|
||||||
} else {
|
} else {
|
||||||
//TODO: test code for PICT, WMF and EMF
|
//TODO: test code for PICT, WMF and EMF
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user