簡體   English   中英

android轉換圖像中的Pdf渲染器是透明背景

[英]Pdf Renderer in android converted image is Transparent background

我是android開發的新手。 我正在將 Pdf 轉換為 Image 並將其存儲在某個位置。 我使用 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

這是我轉換后得到的透明圖像

提前致謝。

我用過畫布,效果很好

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);
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM