下面列出了org.apache.poi.ss.usermodel.Workbook#PICTURE_TYPE_JPEG 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。
/**
* @return the POI internal image type, -1 if not unknown image type
*
* @see Workbook#PICTURE_TYPE_DIB
* @see Workbook#PICTURE_TYPE_EMF
* @see Workbook#PICTURE_TYPE_JPEG
* @see Workbook#PICTURE_TYPE_PICT
* @see Workbook#PICTURE_TYPE_PNG
* @see Workbook#PICTURE_TYPE_WMF
*/
public int getPictureType() {
switch (blip.getRecordId()) {
case EscherMetafileBlip.RECORD_ID_WMF:
return Workbook.PICTURE_TYPE_WMF;
case EscherMetafileBlip.RECORD_ID_EMF:
return Workbook.PICTURE_TYPE_EMF;
case EscherMetafileBlip.RECORD_ID_PICT:
return Workbook.PICTURE_TYPE_PICT;
case EscherBitmapBlip.RECORD_ID_PNG:
return Workbook.PICTURE_TYPE_PNG;
case EscherBitmapBlip.RECORD_ID_JPEG:
return Workbook.PICTURE_TYPE_JPEG;
case EscherBitmapBlip.RECORD_ID_DIB:
return Workbook.PICTURE_TYPE_DIB;
default:
return -1;
}
}
private int getImageFormat( final ResourceKey key ) {
final URL url = resourceManager.toURL( key );
if ( url == null ) {
return -1;
}
final String file = url.getFile();
if ( StringUtils.endsWithIgnoreCase( file, ".png" ) ) { // NON-NLS
return Workbook.PICTURE_TYPE_PNG;
}
if ( StringUtils.endsWithIgnoreCase( file, ".jpg" ) || // NON-NLS
StringUtils.endsWithIgnoreCase( file, ".jpeg" ) ) { // NON-NLS
return Workbook.PICTURE_TYPE_JPEG;
}
if ( StringUtils.endsWithIgnoreCase( file, ".bmp" ) || // NON-NLS
StringUtils.endsWithIgnoreCase( file, ".ico" ) ) { // NON-NLS
return Workbook.PICTURE_TYPE_DIB;
}
return -1;
}
/**
* 获取图片类型,设置图片插入类型
*
* @param value
* @return
* @Author JueYue
* @date 2013年11月25日
*/
public int getImageType(byte[] value) {
String type = PoiPublicUtil.getFileExtendName(value);
if (type.equalsIgnoreCase("JPG")) {
return Workbook.PICTURE_TYPE_JPEG;
} else if (type.equalsIgnoreCase("PNG")) {
return Workbook.PICTURE_TYPE_PNG;
}
return Workbook.PICTURE_TYPE_JPEG;
}
private int buildImageFormat(Image img){
int type=Workbook.PICTURE_TYPE_PNG;
String path=img.getPath();
if(path==null){
return type;
}
path=path.toLowerCase();
if(path.endsWith("jpg") || path.endsWith("jpeg")){
type=Workbook.PICTURE_TYPE_JPEG;
}
return type;
}
protected int buildImageFormat(Image img){
int type=Workbook.PICTURE_TYPE_PNG;
String path=img.getPath();
if(path==null){
return type;
}
path=path.toLowerCase();
if(path.endsWith("jpg") || path.endsWith("jpeg")){
type=Workbook.PICTURE_TYPE_JPEG;
}
return type;
}
/**
* 获取图片类型,设置图片插入类型
*
* @param value
* @return
* @Author JueYue
* @date 2013年11月25日
*/
public int getImageType(byte[] value) {
String type = PoiPublicUtil.getFileExtendName(value);
if (type.equalsIgnoreCase("JPG")) {
return Workbook.PICTURE_TYPE_JPEG;
} else if (type.equalsIgnoreCase("PNG")) {
return Workbook.PICTURE_TYPE_PNG;
}
return Workbook.PICTURE_TYPE_JPEG;
}
public int getExcelPictureType() throws InputException {
if (format == SWT.IMAGE_JPEG) {
return Workbook.PICTURE_TYPE_JPEG;
} else if (format == SWT.IMAGE_PNG) {
return Workbook.PICTURE_TYPE_PNG;
} else {
throw new InputException("dialog.message.export.image.not.supported");
}
}
/**
* <p>
* Convert a MIME string into a Workbook.PICTURE* constant.
* </p><p>
* In some cases BIRT fails to submit a MIME string, in which case this method falls back to basic data signatures for JPEG and PNG images.
* <p>
* @param mimeType
* The MIME type.
* @param data
* The image data to consider if no recognisable MIME type is provided.
* @return
* A Workbook.PICTURE* constant.
*/
public int poiImageTypeFromMimeType( String mimeType, byte[] data ) {
if( "image/jpeg".equals(mimeType) ) {
return Workbook.PICTURE_TYPE_JPEG;
} else if( "image/png".equals(mimeType) ) {
return Workbook.PICTURE_TYPE_PNG;
} else if ( "image/bmp".equals( mimeType ) ) {
return Workbook.PICTURE_TYPE_DIB;
} else {
if( null != data ) {
log.debug( "Data bytes: "
+ " " + Integer.toHexString( data[0] ).toUpperCase()
+ " " + Integer.toHexString( data[1] ).toUpperCase()
+ " " + Integer.toHexString( data[2] ).toUpperCase()
+ " " + Integer.toHexString( data[3] ).toUpperCase()
);
if( ( data.length > 2 )
&& ( data[0] == (byte)0xFF)
&& ( data[1] == (byte)0xD8)
&& ( data[2] == (byte)0xFF)
) {
return Workbook.PICTURE_TYPE_JPEG;
}
if( ( data.length > 4 )
&& ( data[0] == (byte)0x89)
&& ( data[1] == (byte)'P')
&& ( data[2] == (byte)'N')
&& ( data[3] == (byte)'G')
) {
return Workbook.PICTURE_TYPE_PNG;
}
}
return 0;
}
}
/**
* Return the dimension of this image
*
* @param is the stream containing the image data
* @param type type of the picture: {@link org.apache.poi.ss.usermodel.Workbook#PICTURE_TYPE_JPEG},
* {@link org.apache.poi.ss.usermodel.Workbook#PICTURE_TYPE_PNG} or {@link org.apache.poi.ss.usermodel.Workbook#PICTURE_TYPE_DIB}
*
* @return image dimension in pixels
*/
public static Dimension getImageDimension(InputStream is, int type){
Dimension size = new Dimension();
switch (type){
//we can calculate the preferred size only for JPEG, PNG and BMP
//other formats like WMF, EMF and PICT are not supported in Java
case Workbook.PICTURE_TYPE_JPEG:
case Workbook.PICTURE_TYPE_PNG:
case Workbook.PICTURE_TYPE_DIB:
try {
//read the image using javax.imageio.*
ImageInputStream iis = ImageIO.createImageInputStream( is );
try {
Iterator<ImageReader> i = ImageIO.getImageReaders( iis );
ImageReader r = i.next();
try {
r.setInput( iis );
BufferedImage img = r.read(0);
int[] dpi = getResolution(r);
//if DPI is zero then assume standard 96 DPI
//since cannot divide by zero
if (dpi[0] == 0) dpi[0] = PIXEL_DPI;
if (dpi[1] == 0) dpi[1] = PIXEL_DPI;
size.width = img.getWidth()*PIXEL_DPI/dpi[0];
size.height = img.getHeight()*PIXEL_DPI/dpi[1];
} finally {
r.dispose();
}
} finally {
iis.close();
}
} catch (IOException e) {
//silently return if ImageIO failed to read the image
logger.log(POILogger.WARN, e);
}
break;
default:
logger.log(POILogger.WARN, "Only JPEG, PNG and DIB pictures can be automatically sized");
}
return size;
}
private void setImage(Td td, Sheet sheet) {
if (td.getFile() == null) {
return;
}
try {
if (createHelper == null) {
createHelper = workbook.getCreationHelper();
}
byte[] bytes = Files.readAllBytes(td.getFile().toPath());
String fileName = td.getFile().getName();
int format;
String suffix = fileName.substring(fileName.lastIndexOf(".") + 1).toLowerCase();
switch (suffix) {
case "jpg":
case "jpeg":
format = Workbook.PICTURE_TYPE_JPEG;
break;
case "png":
format = Workbook.PICTURE_TYPE_PNG;
break;
case "dib":
format = Workbook.PICTURE_TYPE_DIB;
break;
case "emf":
format = Workbook.PICTURE_TYPE_EMF;
break;
case "pict":
format = Workbook.PICTURE_TYPE_PICT;
break;
case "wmf":
format = Workbook.PICTURE_TYPE_WMF;
break;
default:
throw new IllegalArgumentException("Invalid image type");
}
int pictureIdx = workbook.addPicture(bytes, format);
Drawing drawing = sheet.createDrawingPatriarch();
ClientAnchor anchor = createHelper.createClientAnchor();
anchor.setCol1(td.getCol());
anchor.setRow1(td.getRow());
Picture pict = drawing.createPicture(anchor, pictureIdx);
pict.resize(1, 1);
} catch (IOException e) {
throw new RuntimeException(e);
}
}