gpt4 book ai didi

Android 的 PdfRenderer 类生成低质量图像

转载 作者:IT老高 更新时间:2023-10-28 23:38:28 32 4
gpt4 key购买 nike

我正在使用 PdfRendererabove api 21 在我的应用程序中显示 pdf,我注意到页面的质量很差。我还按照谷歌示例使用 PdfRenderer 这就是我为页面创建 Bitmap 的方式:

//mCurrentPage is a PdfRenderer.Page and mImageView is an ImageView
Bitmap bitmap = Bitmap.createBitmap(mCurrentPage.getWidth(),
mCurrentPage.getHeight(),
Bitmap.Config.ARGB_8888);
mCurrentPage.render(bitmap, null, null, PdfRenderer.Page.RENDER_MODE_FOR_DISPLAY);
mImageView.setImageBitmap(bitmap);

我使用 ARGB_8888 因为据我所知,它是显示位图的最佳质量。我是不是做错了什么?

编辑

这是 PdfRenderer 类和经典 Pdf 阅读器之间的巨大差异:

enter image description here enter image description here

最佳答案

ARGB_8888` 仅用于颜色质量,但打印/显示质量与分辨率(在屏幕上显示时每英寸有多少点)有关。

例如,如果您有 400 DPI 屏幕(每英寸 400 点)并且想要以这种质量显示 PDF,那么您应该通过将像素作为其大小的 Bitmap.createBitmap() 渲染位图:

Bitmap bitmap = Bitmap.createBitmap(
getResources().getDisplayMetrics().densityDpi * mCurrentPage.getWidth() / 72,
getResources().getDisplayMetrics().densityDpi * mCurrentPage.getHeight() / 72,
Bitmap.Config.ARGB_8888
);

地点:

  1. getResources().getDisplayMetrics().densityDpi为目标DPI分辨率
  2. mCurrentPage.getWidth() 以 Postscript 点为单位返回宽度,其中每个 pt 为 1/72 英寸。
  3. 72 (DPI) 是默认的 PDF 分辨率。

因此,将#2 乘以 72 得到英寸,乘以 DPI 得到像素。换句话说,为了匹配显示器打印设备的质量,您应该增加渲染图像的大小,因为默认 PDF 分辨率为 72 DPI。另请查看this post ?

关于Android 的 PdfRenderer 类生成低质量图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32273961/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com