簡體   English   中英

從輸入流讀取

[英]Reading from input stream

我正在為Android應用程序開發一個庫,在該庫中我將附加信息附加到PNG圖像的末尾。 我正在創建一個DataOutputStream變量,並在它的末尾寫入額外的信息,以便在我打開PNG並使用DataInputStream將其轉換為Bitmap時使用。 我添加了一個標記來區分圖像代碼何時結束以及我的額外信息何時開始。

多余的數據正確地附加在標記后面。 問題是讀取DataInputStream的PNG數據以將其轉換為位圖。 正在讀取所有DataInputStream (即使我在標記之前添加了大量占位符字節)。

我用來讀取流的PNG部分的實現是:

位圖圖像= BitmapFactory.decodeStream(inputStream);

我想知道是否還有另一種方法可以實現此目的,以便在PNG數據字節之后停止讀取流。

如果沒有更好的方法,我將采取的路線是將輸入流復制到數組中。 然后,我將讀取所有數據,直到到達標記。

您可以創建包裝器InputStream,然后在讀取整個流之前先報告EOF。 這使您避免必須將整個流讀入一個字節數組。

class MarkerInputStream extends FilterInputStream {
    MarkerInputStream(InputStream in) {
        super(in);
    }

    @Override
    public int read() throws IOException {
        if (isAtMarker()) {
            return -1;
        }
        // may need to read from a cache depending on what isAtMarker method does.
        return super.read();
    }

    private boolean isAtMarker() {
        // logic for determining when you're at the end of the image portion
        return false;
     }
}

暫無
暫無

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

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