簡體   English   中英

從 PIL.Image 獲取二進制圖像數據?

[英]Get binary image data from PIL.Image?

我在 PIL 中打開了一個圖像,如下所示:

from PIL import Image

i = Image.open("image.jpg")

我需要訪問這個文件的原始內容。 我怎樣才能獲得整個圖片數據,就像我已經完成open(...).read()

你可以看到這個答案python Image PIL to binary Hex

img對象需要再次保存; 將其寫入另一個 BytesIO 對象:

 output = io.BytesIO() img.save(output, format='JPEG')

然后使用 .getvalue() 方法獲取寫入的數據:

 hex_data = output.getvalue()

如果您想獲取圖像的實際字節,只需使用i.tobytes() 這是Pillow ,我不確定它是否在原始PIL模塊中,但從文檔來看它應該是。

在 PIL 中:

Image.open(path).convert('1')

文檔中所述

1模式用於(1 位像素,黑白,每字節存儲一個像素)

PIL 使用延遲打開機制,其中文件內容僅在需要時讀取。 為此,它可能會將文件引用保留在某些內部(私有)屬性中。

即使這個屬性是可訪問的,它肯定不會作為官方 PIL API 的一部分公開——而且它肯定不打算以這種方式使用。

讀取數據后,文件內容被解碼,並作為像素值保存在內存中(這通常是處理圖像時所需要的)。 該庫當然不會將未解碼的文件數據保存在內存中的數據結構中,因為它毫無意義。

如果您想要原始文件內容,您可能正在使用其他模塊處理圖像,或存儲它,或以與實際圖像內容無關的形式迭代數據 - 您不能直接打開文件定期“開放”?

暫無
暫無

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

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