Программа просмотра PDF-файлов VuDroid не может найти растровое изображение для рендеринга или не рендеринг

Я пытаюсь использовать программу просмотра PDF VuDroid, и мне нужно чтобы взять визуализированное растровое изображение и сохранить его как byte []. Затем мне нужно преобразовать его обратно в Bitmap, который можно отобразить в представлении, используя что-то вроде «canvas.drawBitmap (bitmap, 0, 0, paint);».

Я потратил много часов, пытаясь получить доступ к растровому изображению, и, возможно, уже сделал это, но даже если я получу byte [], чтобы вернуть что-то, он все равно не будет отображаться как растровое изображение на холсте.

Может ли кто-нибудь помочь мне здесь, я, должно быть, что-то упускаю. Большое спасибо.

Я считаю, что к нему можно получить доступ через ...

PDFPage.java .... общедоступный Bitmap renderBitmap (int width, int height, RectF pageSliceBounds)

-or-

через Page.java -или- DocumentView.java -или- DecodeService.java

Как я уже сказал, я пробовал все это и получил результаты. Я просто не вижу, где я ошибаюсь, так как я не могу визуализировать его, чтобы увидеть, правильно ли было вызвано Bitmap.

Еще раз спасибо :)


person CommonKnowledge    schedule 13.07.2012    source источник


Ответы (2)


В документе говорится, что метод возвращает «null, если изображение не может быть декодировано». Ты можешь попробовать:

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

Думаю, это вам поможет: -

Визуализировать байт [] как растровое изображение в Android

Как Bitmap.Save (Stream, ImageFormat) форматирует данные?

Копировать изображение с альфа-каналом в буфер обмена с настраиваемым фоном цвет?

person Javascript Coder    schedule 23.07.2012

если вы хотите получить каждую страницу 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);
        }
person ali5238    schedule 16.09.2015