当前位置: 首页 > 知识库问答 >
问题:

PDFBox中的缩放图像模糊

邵绪
2023-03-14

然后,我根据页面大小与图像大小计算缩放的维度,返回:java.awt.dimension[width=562,height=792]我使用下面的代码来计算缩放的维度:

public static Dimension getScaledDimension(Dimension imgSize, Dimension boundary) {
  int original_width = imgSize.width;
  int original_height = imgSize.height;
  int bound_width = boundary.width;
  int bound_height = boundary.height;
  int new_width = original_width;
  int new_height = original_height;

  // first check if we need to scale width
  if (original_width > bound_width) {
    //scale width to fit
    new_width = bound_width;
    //scale height to maintain aspect ratio
    new_height = (new_width * original_height) / original_width;
  }

  // then check if we need to scale even with the new height
  if (new_height > bound_height) {
    //scale height to fit instead
    new_height = bound_height;
    //scale width to maintain aspect ratio
    new_width = (new_height * original_width) / original_height;
  }

  return new Dimension(new_width, new_height);
}

为了实际执行图像缩放,我使用image Scalr API:

BufferedImage newImg = Scalr.resize(img, Scalr.Method.ULTRA_QUALITY, Scalr.Mode.FIT_EXACT, 
  scaledWidth, scaledHeight, Scalr.OP_ANTIALIAS);

我的问题是我做错了什么?当缩放到较小的尺寸时,大的图像不应该被模糊。这与PDF页面的分辨率/大小有关吗?

共有1个答案

谢建业
2023-03-14

好的,我找到了一种方法,可以在不丢失质量的情况下添加图像。

实际上,为了使图像不模糊,我让PDFBox调整图像的大小,给它所需的大小。如下面的代码:

PDXObjectImage ximage = new PDJpeg(doc, new FileInputStream(new File("/usr/gyo/my_large_image.jpg")), 1.0f);
PDPageContentStream contentStream = new PDPageContentStream(doc, page, true, false);
Dimension scaledDim = getScaledDimension(new Dimension(ximage.getWidth(),  ximage.getHeight()), page.getMediaBox().createDimension());
contentStream.drawXObject(ximage, 1, 1, scaledDim.width, scaledDim.height);
contentStream.close();

谢谢你,

 类似资料:
  • 问题内容: 改变的大小的图像在GWT部件改变所述图像元素的大小,但不重新调整屏幕上的图像。因此,以下操作将无效: 这是因为GWT 通过使用CSS 将HTML 元素的设置为图像来实现其Image小部件。 如何获得要调整尺寸的实际图像? 问题答案: 我看到了此博客条目,该条目通过使用GWT DataResource而不是ImageResource解决了问题。事实证明,如果您按以下方式使用它,则Imag

  • 以下是CardView的XML代码: 我尝试对ImageView(和LinearLayout)的属性使用wrap_content,并尝试包含属性android: caleType="fitXY",但它没有帮助,似乎没有任何效果。 谁能帮我一下吗?我非常感谢您的每一句评论,也非常感谢您的帮助。

  • 主要内容:创建缩略图,批量修改图片尺寸在图像处理过程中经常会遇到缩小或放大图像的情况,Image 类提供的 resize() 方法能够实现任意缩小和放大图像。 resize() 函数的语法格式如下: 参数说明: size:元组参数 (width,height),图片缩放后的尺寸; resample:可选参数,指图像重采样滤波器,与 thumbnail() 的 resample 参数类似,默认为 Image.BICUBIC; box:对

  • Image Scaler是一个非常有用的工具,用于缩放图像以增大或减小其尺寸,或者我们可以说调整图像的大小。 要缩放图像,我们需要按照以下步骤操作 - Step 1 - 单击图像部分中的Scaler打开图像缩放Scaler 。 Step 2 - 通过单击左侧的文件夹图标导航到目录,方法与上面相同。 Step 3 - 单击“文件名”,选择要调整大小的文件。 Note − Image Scaler i