android 转换图像中的 Pdf 渲染器是透明背景
Pdf Renderer in android converted image is Transparent background
我是 android 开发的新手。我正在努力将 Pdf 转换为图像并将其存储在一个位置。我使用 PdfRenderer(API 级别 21)将 PDF 转换为位图图像。转换后的图像是透明背景。请指导我将图像转换为白色背景。这样我就可以把它转换成二进制数字了。
PdfRenderer renderer = new PdfRenderer(ParcelFileDescriptor.open(pdfFile, ParcelFileDescriptor.MODE_READ_ONLY));
Bitmap bitmap;
final int pageCount = renderer.getPageCount();
System.out.println("pageCount"+pageCount);
for (int i = 0; i < pageCount; i++) {
PdfRenderer.Page page = renderer.openPage(i);
int width = getResources().getDisplayMetrics().densityDpi / 72 * page.getWidth();
int height = getResources().getDisplayMetrics().densityDpi / 72 * page.getHeight();
bitmap = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888);
page.render(bitmap, null, null, PdfRenderer.Page.RENDER_MODE_FOR_PRINT);
storeImage(bitmap,"test.bmp");//I have wrote a function here to save the image
This is the Transparent Image I get after converting
提前致谢。
我用过 canvas 并且有效
Canvas canvas = new Canvas(bitmap);
canvas.drawColor(Color.WHITE);
canvas.drawBitmap(bitmap, 0, 0, null);
谢谢。
使用 Abdul 的回答,这是对我有用的完整实现,可以避免在来自 Pdf 的位图中出现透明背景。
int pageCount = renderer.getPageCount();
for (int pageIndex = 0; pageIndex < pageCount; pageIndex++) {
PdfRenderer.Page page = renderer.openPage(pageIndex);
Bitmap bitmap = Bitmap.createBitmap(page.getWidth(), page.getHeight(), Bitmap.Config.ARGB_8888);
// Paint bitmap before rendering
Canvas canvas = new Canvas(bitmap);
canvas.drawColor(Color.WHITE);
canvas.drawBitmap(bitmap, 0, 0, null);
// Render Pdf page into bitmap
page.render(bitmap, null, null, PdfRenderer.Page.RENDER_MODE_FOR_DISPLAY);
page.close();
bitmaps.add(bitmap);
}
我是 android 开发的新手。我正在努力将 Pdf 转换为图像并将其存储在一个位置。我使用 PdfRenderer(API 级别 21)将 PDF 转换为位图图像。转换后的图像是透明背景。请指导我将图像转换为白色背景。这样我就可以把它转换成二进制数字了。
PdfRenderer renderer = new PdfRenderer(ParcelFileDescriptor.open(pdfFile, ParcelFileDescriptor.MODE_READ_ONLY));
Bitmap bitmap;
final int pageCount = renderer.getPageCount();
System.out.println("pageCount"+pageCount);
for (int i = 0; i < pageCount; i++) {
PdfRenderer.Page page = renderer.openPage(i);
int width = getResources().getDisplayMetrics().densityDpi / 72 * page.getWidth();
int height = getResources().getDisplayMetrics().densityDpi / 72 * page.getHeight();
bitmap = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888);
page.render(bitmap, null, null, PdfRenderer.Page.RENDER_MODE_FOR_PRINT);
storeImage(bitmap,"test.bmp");//I have wrote a function here to save the image
This is the Transparent Image I get after converting
提前致谢。
我用过 canvas 并且有效
Canvas canvas = new Canvas(bitmap);
canvas.drawColor(Color.WHITE);
canvas.drawBitmap(bitmap, 0, 0, null);
谢谢。
使用 Abdul 的回答,这是对我有用的完整实现,可以避免在来自 Pdf 的位图中出现透明背景。
int pageCount = renderer.getPageCount();
for (int pageIndex = 0; pageIndex < pageCount; pageIndex++) {
PdfRenderer.Page page = renderer.openPage(pageIndex);
Bitmap bitmap = Bitmap.createBitmap(page.getWidth(), page.getHeight(), Bitmap.Config.ARGB_8888);
// Paint bitmap before rendering
Canvas canvas = new Canvas(bitmap);
canvas.drawColor(Color.WHITE);
canvas.drawBitmap(bitmap, 0, 0, null);
// Render Pdf page into bitmap
page.render(bitmap, null, null, PdfRenderer.Page.RENDER_MODE_FOR_DISPLAY);
page.close();
bitmaps.add(bitmap);
}