2015-09-25 74 views
2

在Java中使用編碼爲base64字符串的網絡中的圖像工作。我只在img src標籤中看過image/png格式,例如data:image/png;base64,{eNc0d3d_St!ng...}我還沒有看到image/gif或image/jpg。我已經看過,並在base64編碼上讀了一點。是data:image/png; base64是img標籤唯一的base64編碼?

此外,我在做 Base64.decode(src, Base64.DEFAULT)時脫離了Java(Android)中的data:image/png;base64部分,所以看起來在這種情況下沒有必要使用png。事實上,如果我不剝掉這個「標題」,那麼BitmapFactory.decodeByteArray返回null。

所以問題是,除了PNG以外的其他格式的圖像編碼在網絡上?

+0

大部分圖像(或其他二進制)文件格式,如PNG,GIF或JPEG格式,包含了(「魔術」)在文件開頭的標識符,唯一標識格式。在這種情況下,'image/png'部分是多餘的,但對於可以使用數據URI方案表示的所有可能的格式來說,情況可能並非如此。所以它確實有一個目的。另外,請記住'; base64'部分我*可選*,不要盲目地將數據發送到Base64解碼器。 – haraldK

+0

感謝您的評論,這回答了我對這個主題的一些相關問題。並且還會生成一些新的。 :) –

回答

1

是的,他們是:

數據:圖像/ GIF

數據:圖像/ JPG

等等

,而不是隻針對圖片:

data:text/html

Th Ë格式是如下

data:[<media type>][;charset=<character set>][;base64],<data> 

硒這裏 https://en.wikipedia.org/wiki/Data_URI_scheme

http://dataurl.net/#about

+0

http://dataurl.net/#about列表圖像/ gif,謝謝。 Wiki列表圖像/ png –

0

沒有,你可以使用gifjpg或任何類型的圖像瀏覽器讀取。例如:

<img width="16" height="16" alt="star" src="data:image/gif;base64,R0lGODlhEAAQAMQAAORHHOVSKudfOulrSOp3WOyDZu6QdvCchPGolfO0o/XBs/fNwfjZ0frl3/zy7////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAkAABAALAAAAAAQABAAAAVVICSOZGlCQAosJ6mu7fiyZeKqNKToQGDsM8hBADgUXoGAiqhSvp5QAnQKGIgUhwFUYLCVDFCrKUE1lBavAViFIDlTImbKC5Gm2hB0SlBCBMQiB0UjIQA7" />

+0

也許這是最好的一個單獨的問題,但是:如果我將上面的代碼中的圖像/ png更改爲image/gif,我會得到相同的圖像。我預計可能會出現一個損壞的圖像,但似乎至少FF將其渲染爲相同,無論聲明的圖像類型如何。 –

+0

對,一旦FF看到數據流是圖像,它會查看「幻數」找出它是哪種圖像類型。 –