好朋友。將圖像序列化爲字符串
幾個月我正在尋找一種方法來序列化我已經存儲在imageView中的圖像。
此圖像是由相機拍攝並啓動ImageView,但問題esque需要序列化並將其傳遞給文本字符串。
我已經搜索谷歌和論壇的高和低,但沒有找到答案。
任何人都知道我能做些什麼的方法?
好朋友。將圖像序列化爲字符串
幾個月我正在尋找一種方法來序列化我已經存儲在imageView中的圖像。
此圖像是由相機拍攝並啓動ImageView,但問題esque需要序列化並將其傳遞給文本字符串。
我已經搜索谷歌和論壇的高和低,但沒有找到答案。
任何人都知道我能做些什麼的方法?
如果你想以二進制數據的形式安全地移動文本,你可以Base64編碼二進制數據。如果您使用的是不包含Base64實用程序的Android API,請參閱:How to use Base64 (included in android since api 8 (2.2)) in a android project api 3 (android 1.5)?
一旦您的二進制數據是Base64編碼,它可以安全地通過系統,只希望'純'ascii文本。
請記住,您的位圖數據將被解壓縮,並因此會在Base64編碼(Base64編碼導致表示數據增加1/3所需的字節)時生成大量文本。爲了緩解這個你應該壓縮Bitmap
圖像數據base64編碼之前,使用類似:如果你要設置的COMPRESSION_AMOUNT的值50-80之間關閉規模和質量你們之間因貿易
try
{
ByteArrayOutputStream baos = new ByteArrayOutputStream(8192);
bitmap.compress(CompressFormat.JPEG, COMPRESSION_AMOUNT, baos);
byte[] compressedBytes = baos.toByteArray();
}
想要。
收到您的數據的任何客戶端將首先需要Base64 unncode,然後解析生成的字節作爲JPEG數據重新創建圖像。
我有一個非常類似的方法來壓縮和移動圖像到base64,但是一個非常大的字符串,我想我會需要更小的東西,不管圖像是相當小或像素化,我需要的是序列化圖像使用3G技術發送到服務器。 由於我可以壓縮更多,使字符串更小? – JulioStyle88
您可以啓動壓縮(降低「COMPRESSION_AMOUNT」值)或調整圖像大小。無論如何,您可能需要調整圖像大小,因爲一些照相手機正在開始生成相當高分辨率的圖像。 –
你試過去做一個二進制轉換爲Unicode或普通字符?我的意思是,逐個像素地逐個查看顏色的二進制數據並將其保存爲char值?另外,流呢?任何流可以最終成爲一個字節流,然後可以轉換爲文本流或其他東西。 –
你只是想將一個Image對象序列化爲一個UTF編碼的字符串? – MrWuf