2017-07-21 22 views
0

私はアンドロイド開発の初心者です。私はPdfをImageに変換し、それをある場所に保存する作業をしています。私はPdfRenderer(APIレベル21)を使用してPDFをビットマップイメージに変換しました。変換された画像は透明な背景です。白い背景の画像を変換するように私に指示してください。私はそれをバイナリ数字に変換できるように。事前にアンドロイド変換された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

感謝。

+0

ただJPGとして保存してください。透明性の情報は自動的に失われます。 –

答えて

1

私はキャンバスを使用していましたが、それは機能しました Canvas canvas = new Canvas(bitmap); canvas.drawColor(Color.WHITE); canvas.drawBitmap(bitmap, 0, 0, null); ありがとうございます。

0

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