VuDroid pdf查看器无法找到要渲染的位图,也无法渲染

时间:2012-07-13 01:58:28

标签: android bitmap bytearray pdf-viewer vudroid

我正在尝试使用VuDroid PDF查看器,我需要获取渲染的位图并将其存储为byte []。然后我需要将它转换回一个Bitmap,可以使用类似“canvas.drawBitmap(bitmap,0,0,paint);”的方式在视图上显示。

我花了很多时间尝试访问Bitmap,我可能已经完成了它,但即使我得到byte []返回它仍然不会在画布上呈现为Bitmap。

有人可以在这里帮助我,我必须遗漏一些东西。非常感谢你。

我相信它应该通过......进行访问。

PDFPage.java .... public Bitmap renderBitmap(int width,int height,RectF pageSliceBounds)

-OR -

通过Page.java - 或 - DocumentView.java - 或 - DecodeService.java

就像我说我已经尝试了所有这些并且得到了结果我只是看不到我出错的地方,因为我无法渲染它以查看Bitmap是否被正确调用。

再次感谢你:)

3 个答案:

答案 0 :(得分:2)

该文档称该方法返回“如果图像无法解码,则返回null”。你可以尝试:

byte[] image = services.getImageBuffer(1024, 600);
InputStream is = new ByteArrayInputStream(image);
Bitmap bmp = BitmapFactory.decodeStream(is);

我认为这会对你有所帮助: -

Render a byte[] as Bitmap in Android

How does Bitmap.Save(Stream, ImageFormat) format the data?

Copy image with alpha channel to clipboard with custom background color?

答案 1 :(得分:1)

如果您想将每个pdf页面作为独立位图,您应该考虑这一点   VuDroid 渲染页面,   PDFView 仅显示它们。 你应该使用VuDroid功能。

现在您可以使用此示例并创建自己的代码

示例代码:用于从特定PDF页面制作位图

    view = (ImageView)findViewById(R.id.imageView1);
    pdf_conext = new PdfContext();
    PdfDocument d = pdf_conext.openDocument(Environment.getExternalStorageDirectory()  + "your PDF path");

    PdfPage vuPage = d.getPage(1); // choose your page number
    RectF rf = new RectF();
    rf.bottom = rf.right = (float)1.0;
    Bitmap bitmap = vuPage.renderBitmap(60, 60, rf); //define width and height of bitmap

    view.setImageBitmap(bitmap);

用于在SDCARD上编写此位图

try {   
    File mediaImage = new File(Environment.getExternalStorageDirectory().toString() + "your path for save thumbnail images ");
    FileOutputStream out = new FileOutputStream(mediaImage);
    bitmap.compress(Bitmap.CompressFormat.JPEG, 90, out);
    out.flush();
    out.close();
} catch (Exception e) {
    e.printStackTrace();
}

用于检索已保存的图片

        File file = new File(Environment.getExternalStorageDirectory().toString()+ "your path for save thumbnail images ");

        String path = file.getAbsolutePath(); 
        if (path != null){
            view = Bitmap.createScaledBitmap(BitmapFactory.decodeFile(path), YOUR_X, YOUR_Y, false);
        }

答案 2 :(得分:0)

Try this code to check whether bitmap is properly generating or not

PdfContext pdf_conext = new PdfContext();
PdfDocument d = (PdfDocument) pdf_conext.openDocument(pdfPath);  

PdfPage vuPage = (PdfPage) d.getPage(0);  
RectF rf = new RectF();  

Bitmap bitmap = vuPage.renderBitmap(1000,600, rf);  

File dir1 = new File (root.getAbsolutePath() + "/IMAGES");
dir1.mkdirs();
String fname = "Image-"+ 2 +".jpg";
File file = new File (dir1, fname);
if (file.exists ()) 
file.delete (); 
try {
     FileOutputStream out = new FileOutputStream(file);
     bitmap.compress(Bitmap.CompressFormat.JPEG, 90, out);
     out.flush();
     out.close();

   } catch (Exception e) {

 e.printStackTrace();

}