首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java图像缩放

Java图像缩放
EN

Stack Overflow用户
提问于 2010-05-25 22:00:29
回答 3查看 6K关注 0票数 6

我正在使用iText将图像输出到PDF文件。图像总是看起来比预期的要大。根据该书(操作中的iText ),这是因为iText始终以72dpi的分辨率显示图像,而不管图像的实际dpi属性是什么。该书建议使用image.getDpiX()查找图像的dpi,然后使用image.scalePercent(72 / actualDpi * 100)正确显示图像。到目前为止,我所有图片的getDpiX()属性都返回了0(我已经尝试了2gif和1jpg)。有没有其他方法可以计算出实际的DPI,以便正确缩放我的图像?

代码语言:javascript
复制
com.lowagie.text.Image graphic = com.lowagie.text.Image.getInstance(imgPath);
float actualDpi = graphic.getDpiX();
if (actualDpi > 0)
  //Never gets here
  graphic.scalePercent(72f / actualDpi * 100);
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-06-12 01:38:24

对于GIF,在文件中没有地方存储"DPI“信息,所以"actualDpi”在这种情况下没有意义。对于JPEG,"DPI“信息可以存储在文件中,但不是强制的,如果没有设置:"actualDPI”也没有意义。真正的答案是:没有“实际的DPI”这样的东西,也没有提供信息(即。“在这个图像中,我希望用这个特定的物理宽度(或高度)来渲染1个像素”),或者不是。另一个元素在你的句子中:“总是看起来比他们应该的要大”;“假设”是存储在图像中的DPI信息。因此,如果缺少这些信息,并且您觉得当您打开图像时,它似乎就在屏幕上,那么您必须计算屏幕的密度(像素数中的宽度除以屏幕的宽度(英寸)),并将其用作"actualDPI“变量。

票数 0
EN

Stack Overflow用户

发布于 2010-05-26 00:04:26

根据com.lowagie.text.Image JavaDoc,getDpiX方法获得X方向上的每英寸点数。如果不可用,则返回零。

当getDpiX方法返回零时,您必须假定一个值。100 dpi是一个很好的假设。

代码语言:javascript
复制
if (actualDpi <= 0) actualDpi = 100f;
graphic.scalePercent(72f / actualDpi * 100f);
票数 1
EN

Stack Overflow用户

发布于 2011-10-07 22:25:51

检索到的屏幕分辨率

代码语言:javascript
复制
java.awt.Toolkit.getDefaultToolkit().getScreenResolution()

没有帮助,图像还是太大了。但是,可以通过以下方式将图像缩放到页面宽度:

代码语言:javascript
复制
BufferedImage bufferedImage = null; // your image
Image image = Image.getInstance(bufferedImage,null);
image.scalePercent((document.right()-document.left())/((float)image.getWidth())*100);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2905323

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档