使用nl.siegmann.epublib我從一本書中獲取資源,嘗試實際在屏幕上顯示該資源。從nl.siegmann.epublib獲取資源的位圖資源加載資源
API文檔可以發現here
我使用的代碼是: Book.getCoverImage()和Book.getCoverPage()。
實際的代碼看起來更像是這樣的:
Book book = null;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
ImageView iv = (ImageView)findViewById(R.id.image_test);
try{
Resource res = bookLoaded().getCoverImage();
Bitmap bm = BitmapFactory.decodeStream(res.getInputStream());
iv.setImageBitmap(bm);
}catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}
}
public Book bookLoaded(){
AssetManager am = getAssets();
try{
InputStream is = am.open("Ada Madison - [Sophie Knowles Mystery 01] - The Square Root of Murder (epub).epub");
book = (new EpubReader()).readEpub(is);
}catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}
return book;
}
現在我出現的問題是資源總是空使用.getCoverImage()。當我嘗試.getCoverPage()時出現異常錯誤;
我的問題是「是否正確使用BitmapFactory來做到這一點?我做錯了什麼?或者我錯過了什麼?」。
繼續我到目前爲止研究的內容: 您可以獲取.epub路徑。使用book.GetHref()。但是,問題更多的是如何.epub文件(類似於zip文件)獲取數據。那麼現在我不得不尋找一個提取器,然後我可以找到圖像文件。
try{
byte[] newData = bookLoaded().getCoverImage().getData();
Bitmap bmp =BitmapFactory.decodeByteArray(newData, 0, newData.length);
image_view.setImageBitmap(bmp);
}catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}
不知何故,bookLoaded()。getCoverImage()。getData();造成例外