0
我正在開發一個Android應用程序,它需要一個位圖,將其轉換爲base64字符串並將其發送到後端,將其另存爲字符串。獲取所需的位圖寬度和高度以適應base64字符串
後端的大小限制大約爲1M,因此我需要在發送它之前在本地調整位圖大小,以確保base64字符串不會超過該限制。
是否有任何方式,公式等知道我必須調整位圖以獲得給定長度的base64字符串?
我目前正在遞歸地做這件事,但這顯然不是最好的解決方案。
段:
private void scaleImg(float scale) {
int newWidth = (int)(bmp.getWidth() * scale);
int newHeight = (int)(bmp.getHeight() * scale);
bmp = Bitmap.createScaledBitmap(bmp, newWidth, newHeight, true);
base64EncodedImg = PicUtils.convertBitmapToBase64String(bmp);
base64EncodedImgLength = base64EncodedImg.length();
if(base64EncodedImgLength > 1000000) {
scaleImg(scale - 0.1f);
}
}
謝謝!
這是有幫助的,但我仍然需要一個遞歸的方法,似乎吧? – Sandy
其實這不是很有效。使用'float scale = MAX_IMG_SIZE_BASE64 /(5.48f * bmpWidth * bmpHeight);'我得到一個非常小的圖像。這可能是因爲編碼?我如何找到正在使用的編碼? – Sandy
我正在使用'BitmapFactory.decodeFile(filename);'以前在代碼中獲取實際的位圖。 – Sandy