getpixels java_如何使用poi ppt中的java.awt.Dimension中的getImageDimensionInPixels()来获取图像大小?(How to get image...

本文介绍了如何在Java中使用Apache POI库处理PPT文件,特别是如何通过`getImageDimensionInPixels()`方法从`XSLFPictureData`获取图像的尺寸。示例代码展示了遍历PPT中的所有图片,打印其文件名和尺寸。此外,还提到了在POI 3.16版本中的API变更。
摘要由CSDN通过智能技术生成

如何使用poi ppt中的java.awt.Dimension中的getImageDimensionInPixels()来获取图像大小?(How to get image size using getImageDimensionInPixels() from java.awt.Dimension in poi ppt?)

我使用以下方法迭代ppt中的所有图片,

for(XSLFPictureData data : ppt.getAllPictures()){

byte[] bytes = data.getData();

String fileName = data.getFileName();

int pictureFormat = data.getPictureType();

System.out.println("picture : " + fileName);

System.out.println("pictureSize : " + data.getImageDimensionInPixels());

}

如何使用此方法获取像素或高度/长度的图像大小?

I iterate over all pictures in ppt using following,

for(XSLFPictureData data : ppt.getAllPictures()){

byte[] bytes = data.getData();

String fileName = data.getFileName();

int pictureFormat = data.getPictureType();

System.out.println("picture : " + fileName);

System.out.println("pictureSize : " + data.getImageDimensionInPixels());

}

How to use this method to get image size in pixels or height/length?

原文:https://stackoverflow.com/questions/40724998

2020-07-25 18:07

满意答案

我已经做了很多修改来将HSLF和XSLF API统一到Common SL - 在您可能抱怨破坏更改之前,XSLF和HSLF都不在稳定的主jar中。 所以使用trunk(POI 3.16),示例代码将是这样的:

@Test

public void bugbla() throws Exception {

XMLSlideShow ppt = XSLFTestDataSamples.openSampleDocument("51187.pptx");

for(XSLFPictureData data : ppt.getPictureData()){

byte[] bytes = data.getData();

String fileName = data.getFileName();

PictureType pictureFormat = data.getType();

System.out.println("picture : " + fileName);

System.out.println("pictureSize : " + data.getImageDimensionInPixels());

}

}

I've made quite a few changes to unify the HSLF and XSLF API to Common SL - and before you might complain about breaking changes, neither XSLF nor HSLF are in the stable main jar. So with the trunk (POI 3.16) the example code would be like this:

@Test

public void bugbla() throws Exception {

XMLSlideShow ppt = XSLFTestDataSamples.openSampleDocument("51187.pptx");

for(XSLFPictureData data : ppt.getPictureData()){

byte[] bytes = data.getData();

String fileName = data.getFileName();

PictureType pictureFormat = data.getType();

System.out.println("picture : " + fileName);

System.out.println("pictureSize : " + data.getImageDimensionInPixels());

}

}

2016-11-21

相关问答

网上好多啊 我给你找了一个例子 view plaincopy to clipboardprint? public static void main(String[] args) { try { String filepath = "d:\\问题清单.xls"; FileInputStream fis = new FileInputStream(filepath); // POIFSFileSystem pfs = new POIFSFileSystem(new FileInputStream("d...

测试结果在我的机器上: HSSF:2秒 SXSSF:5秒 XSSF:27秒 机器规格: CPU: Intel i3-2100, 3.10 GHz, 4-cores

RAM: 16GB

OS: Windows 7 64bit

JDK: 1.7.0_76

我进行了分析,发现由于xmlbeans和poi-ooxml-schemas库中的同步方法, xmlbeans速度很慢。 您可以通知poi开发人员并要求检查此案例。 Test results on my machine: HSSF: 2 sec S...

正如评论中所提到的,EMF不支持开箱即用......并且由于FreeHep决定拥有LGPL许可证,因此我们不太可能在我们的版本中加入 。 在POI中,您基本上有两种选择来提供自定义图像渲染器: 通过setRenderingHint(Drawable.IMAGE_RENDERER, new MyImageRendener())在Graphics2D上下文中实现和注册ImageRenderer实现。 缺点是,它会被调用任何图像,并且你丢失了位图/ wmf图像的默认处理 或提供一个自定义DrawFact...

这种延迟是由One-Jar自定义类加载器造成的。 第一次,加载依赖库并加载它需要更多的时间。 所以,我删除了一个jar文件,并使用JarSplice来加载依赖库类,它工作得很好。 This delay was caused by One-Jar custom class loader. At first time, it takes more time to load the dependency libraries and load it classes. So, I removed one-j...

任何人都可以向我建议我应该去哪一个? Apache POI和Aspose有哪些限制? 这是非常困难和普遍的问题,只能有非常普遍的答案。 每个软件项目都有不同的要求和功能。 对于每个项目来说,使用第三方组件的可行性很可能也不同。 要选择不同的第三方很困难,因为您需要做更多或更少的事情 需求评估(哪个产品符合您的要求或者紧密满足) 在购买产品之前和之后看看客户支持有多好 第三方产品的功能比较 找到多少稳定的产品。 检查他们发布了多少个版本。 新版本有错误修复,新功能? 独立来源的任何奖项 API和文档...

假设你知道你总是想要/ppt/diagrams/data1.xml ,那么你的代码会希望继续: OPCPackage pkg = ppt.getPackage();

PackagePart data1 = pkg.getPart(

PackagingURIHelper.createPartName("/ppt/diagrams/data1.xml"));

InputStream data1Inp = data1.getInputStream();

然后将该InputStream传递...

有一件事要尝试使用更新版本的Apache POI--像这样的错误会随着时间的推移而得到修复。 如果最新版本的POI没有帮助(截止撰写时为3.8 beta 2),您应该在POI bugzilla中打开一个新的bug,然后上传问题文件。 您看到的例外情况是由于POI认为应该存在一定数量的数据并找到更多数据。 通过该文件,可以确定数据在那里的原因并解决它。 (也就是说,假设它还没有被修复!) One thing to try is using a newer version of Apache POI ...

import java.io.File;

import java.io.FileInputStream;

import java.io.InputStream;

import java.util.ArrayList;

/**

* Demonstrates how you can extract embedded data from a .xlsx file

*/

public class GetEmbedded {

public static void main(String[] ...

请改用Dimension.setSize(double,double) 。 Use Dimension.setSize(double,double) instead.

我已经做了很多修改来将HSLF和XSLF API统一到Common SL - 在您可能抱怨破坏更改之前,XSLF和HSLF都不在稳定的主jar中。 所以使用trunk(POI 3.16),示例代码将是这样的: @Test

public void bugbla() throws Exception {

XMLSlideShow ppt = XSLFTestDataSamples.openSampleDocument("51187.pptx");

for(XSLFPictureData...

相关文章

前言:今天在项目中看到有小模块是上传Excel解释后保存到数据库的操作,好奇之下去了解了如何使用Apa

...

Apache POI Apache POI是Apache软件基金会的开放源

...

org.apache.poi.xssf.usermodel.XSSFWorkbook

java.io.FileOutputStream

Java Aspose Cells 是一种纯粹的Java授权的Excel API

setCellValue(boolean value)设置单元格一个布尔值

现在有2个excel文件,一个是模版文件1.xls,里面有各种单元格的格式或者设置的什么的,另一个文件

...

我们假设本教程的读者安装的是Java SDK版本1.7.0_60安装在他们的系统中

cell.setHyperlink(link)

最新问答

如果启用了复制处理程序,请确保将其置于其中一个安全角色之后。 我见过人们做的另一件事是在不同的端口上运行admin。 最好在需要auth的页面上使用SSL,这样你就不会发送明确的密码,因此管理和复制将发生在8443上,而常规查询将在8080上发生。 如果您要签署自己的证书,请查看此有用的SO页面: 如何在特定连接上使用不同的证书? I didn't know that /admin was the context for SOLR admin because /admin does not re

第一:在您的样本中,您有: 但是你在询问 //td[@class=‘CarMiniProfile-TableHeader’] (注意TableHeader中的大写'T')。 xpath区分大小写。 第二:通过查询// td [@ class ='CarMiniProfile-TableHeader'] / td,你暗示你在外部td中有一个'td'元素,而它们是兄弟姐妹。 有很多方法可以在这里获得制作和模型

这是你的答案: http://jsfiddle.net/gPsdk/40/ .preloader-container { position: absolute; top: 0px; right: 0px; bottom: 0px; left: 0px; background: #FFFFFF; z-index: 5; opacity: 1; -webkit-transition: all 500ms ease-out;

问题是,在启用Outlook库引用的情况下, olMailItem是一个保留常量,我认为当您将Dim olMailItem as Outlook.MailItem ,这不是问题,但是尝试设置变量会导致问题。 以下是完整的解释: 您已将olMailItem声明为对象变量。 在赋值语句的右侧,在将其值设置为对象的实例之前,您将引用此Object 。 这基本上是一个递归错误,因为你有对象试图自己分配自己。 还有另一个潜在的错误,如果之前已经分配了olMailItem ,这个语句会引发另一个错误(可能是

我建议使用wireshark http://www.wireshark.org/通过记录(“捕获”)设备可以看到的网络流量副本来“监听”网络上发生的对话。 当您开始捕获时,数据量似乎过大,但如果您能够发现任何看起来像您的SOAP消息的片段(应该很容易发现),那么您可以通过右键单击并选择来快速过滤到该对话'关注TCP Stream'。 然后,您可以在弹出窗口中查看您编写的SOAP服务与Silverlight客户端之间的整个对话。 如果一切正常,请关闭弹出窗口。 作为一个额外的好处,wireshar

Android默认情况下不提供TextView的合理结果。 您可以使用以下库并实现适当的aligntment。 https://github.com/navabi/JustifiedTextView Android Does not provide Justified aligntment of TextView By default. You can use following library and achieve proper aligntment. https://github.com/

你的代码适合我: class apples { public static void main(String args[]) { System.out.println("Hello World!"); } } 我将它下载到c:\ temp \ apples.java。 以下是我编译和运行的方式: C:\temp>javac -cp . apples.java C:\temp>dir apples Volume in drive C is HP_PAV

12个十六进制数字(带前导0x)表示48位。 那是256 TB的虚拟地址空间。 在AMD64上阅读wiki(我假设你在上面,对吗?)架构http://en.wikipedia.org/wiki/X86-64 12 hex digits (with leading 0x) mean 48 bits. That is 256 TB of virtual address space. Read wiki on AMD64 (I assume that you are on it, right?) ar

这将取决于你想要的。 对象有两种属性:类属性和实例属性。 类属性 类属性对于类的每个实例都是相同的对象。 class MyClass: class_attribute = [] 这里已经为类定义了MyClass.class_attribute ,您可以使用它。 如果您创建MyClass实例,则每个实例都可以访问相同的class_attribute 。 实例属性 instance属性仅在创建实例时可用,并且对于类的每个实例都是唯一的。 您只能在实例上使用它们。 在方法__init__中定

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值