2017-03-08 29 views
0

後,我在https://en.wikipedia.org/wiki/Base64如何字Man被使用的base64算法轉化爲TWFu讀,我想知道的圖像是如何被用相同的算法轉換,所有這些轉換需要字節後,將其劃分爲組的6,然後查找他們的ASCII值。如何通過base64算法轉換圖像?

我的問題是,圖像如何變成base64編碼的字符串? 我想要一個描述從我們的計算機中保存圖像直到它變成base64字符串爲止的流程的答案。

我希望將在答案中解釋的術語是: 像素/ dpi/ppi/1bit/8bit/24bit/Mime

+0

我假設是一樣的。 1 ASCII是1字節,所以像素是(在某些圖像類型) –

+3

我投票結束這個問題,因爲它太廣泛和不清楚。所要求的條款與base64編碼沒有任何關係,它們已經在其他地方解釋過了。此外,問題的範圍變化太大和經常。 –

+0

@ThomasWeller,你應該從@John Jones學習如何回答一個廣泛的問題,即使該操作不完全理解相關的術語,你在這裏的評論是沒有建設性和多餘的。 我認爲這句話「對Jones的像素/ dpi/ppi/1bit/8bit/24bit/Mime列表中的任何東西都沒有任何理解」是答案的建設性部分。 –

回答

7

Base64不是圖像編碼器,它是一個字節編碼器,重要的區別。無論您傳遞什麼,無論是圖片,mp3還是字符串「ilikepie」 - 它都需要字節並生成它們的文本表示。它不瞭解您的pixels/dpi/ppi/1bit/8bit/24bit/Mime列表中的任何內容,這將是讀取這些原始字節的軟件的業務。

每請求I want an answer that describes the flow from when we save the image in our computer until it's become 64base string.

要到Base64表示:

  • 打開油漆畫了一個笑臉。
  • 保存的是笑臉如smile.png
  • 塗料使用其png encoder像素的位圖轉換成字節流,它壓縮並追加標頭,這樣,當再次看到這些字節它知道如何顯示它們。
  • 圖像作爲一系列字節寫入磁盤。
  • 您在smile.png上運行base64編碼器。
  • base64從位置smile.png處的磁盤讀取字節並引用並轉換它們的表示並顯示結果。

要在瀏覽器中顯示Base64表示:

  • 瀏覽器遞給resource encoded with base64,這看起來是data:image/png;base64,blahblah...
  • 瀏覽器採取image/png一部分,知道下面該數據將是一個PNG圖像的字節。
  • 然後它看到base64,並知道下一個blob需要進行base64解碼,然後才能通過其png解碼器進行解碼。
  • 它將base64字符串轉換爲字節。
  • 它將這些字節傳遞給它的png解碼器。
  • 它得到一個可以顯示的位圖圖形。
+0

謝謝約翰,有點難以理解png編碼器是如何工作的,但我想我明白了。非常好的答案。 –

+0

我在這裏找到了有關dpi/ppi的解釋: https://sites.google.com/site/dtcsinformation/data-representation/image-representation,如果有人感興趣.. –

0

當您上傳任何文件中使用<input type="file>"因爲它是存儲在您的計算機或設備上轉移到服務器完全相同形式的HTML表單。瀏覽器不檢查文件格式是什麼,並將其作爲字節塊進行特徵化。有關傳輸細節,請參閱How does HTTP file upload work?

1

每個圖像都是由許多像素組成,像素的數量是由圖像分辨率決定的。

圖像分辨率 - 連續像素數&行數。 例如800x600分辨率的圖像連續有800個像素& 600行。

像素具有位深度-位數表示像素。 例如,位深度爲1,每個像素代表一位,並且僅具有2個選項(0或1 - 黑色或白色)。

圖像可以保存在許多不同的格式。最常見的是位圖,jpeg,gif。無論使用何種格式,圖像始終顯示在電腦屏幕上,如位圖(未壓縮格式)。每種格式都保存不同。

  • JPEG - 是一個24位(位深度)格式。當你存儲圖像時,它會以壓縮格式工作,並丟失一些圖像數據。

  • gif - 最多8比特(比特深度)格式。可以通過刪除其調色板中的一些顏色來優化gif圖像。它是一種無損格式。

2

就扔這的字節澄清:

  • 「這個詞MAN被使用的base64算法轉換成TWFu,我不知道如何的圖像得到由轉換同樣的 算法,畢竟這個轉換需要Bytes,將它們分成 組,然後查找它們的ASCII值。「

  • 「我的問題是,圖像如何變成base64字符串?」

校正:MAN變得TUFO。它實際上是Man,如上所示,它變成TWFu

現在到澄清...

圖像的字節值(二進制數)可以在hex notation來表示,這使得可以處理那些相同的字節爲。Hex的範圍是從0F,這意味着..範圍09然後它是A = 10增加F = 15。給出16個可能的值。

十六進制也被稱爲Base16

  • 字節轉換爲Base64很簡單:編號從Base16轉換爲Base64
  • 0 to F的十六進制範圍在Base64有效字符內,因此可寫爲Base64。

例如:

  • 開頭3個字節JPEG格式的總是ff d8 ff
  • 同爲Base64是:/9j/ ...(參見這些link1link2示例)

您可以測試:

  • 在下載中打開任何.jpg圖片免費十六進制編輯器。您也可以嘗試在線十六進制編輯器,但大多數不會複製剪貼板。這online HEX viewer將使選擇/複製但你必須手動刪除複製十六進制文本所有這些額外的減-即:使用查找&替換一些文本編輯器選項),或跳過/避免任何複製之前選擇它們/糊。

  • 回到這個Data Converter並重新鍵入或複製/粘貼爲許多字節(從開始FF到任何X量)到[HEX]框並按decode它下面。這會將這些字節顯示爲Base64,甚至會告訴您每個字節的十進制值。

+1

好的,我編輯了這個問題'Man'。 –