gpt4 book ai didi

javascript - Android 中的图像数据解码

转载 作者:行者123 更新时间:2023-11-30 11:26:39 28 4
gpt4 key购买 nike

我对 Android 中的图像数据解码感到困惑。

以下代码无法正常工作。它收到“bad base-64”错误消息。

String c = data.getString("profile_picture").replace("\n", "");
byte [] picture_data = Base64.decode(c, Base64.DEFAULT); // ******** ERROR (bad base-64) *******

InputStream is = new ByteArrayInputStream(picture_data);

BitmapFactory.Options options = new BitmapFactory.Options();
options.inJustDecodeBounds = true;
Bitmap bmp = BitmapFactory.decodeStream(is, null, options);

ImageView _profile_image = (ImageView)view.findViewById(R.id.image_view);
_profile_image.setImageBitmap(bmp);

我尝试了所有 Base64.* 作为解码参数。

我在 Swift 和 Javascript 中有工作代码,具有相同的图像数据(json 字符串)。

swift

let _profileImageView = UIImageView()
let _profile_image: UIImage? =
registration_data["profile_picture"].string!.urlDecode()
_profileImageView.image = _clinic_image
_profileImageView.frame = CGRect(x: 10,
y: 10,
width: _cellDetailView.frame.width * 0.2,
height: _cellDetailView.frame.width * 0.2
)
_cellDetailView.addSubview(_profileImageView)

public func urlDecode() -> UIImage? {
var img: UIImage = UIImage()
let base64String = self.replacingOccurrences(of: "}", with: "+")

let decodeBase64:NSData? =
NSData(base64Encoded:base64String, options: NSData.Base64DecodingOptions.ignoreUnknownCharacters)

if let decodeSuccess = decodeBase64 {
img = UIImage(data: decodeSuccess as Data)!
}
return img
}

Javascript

document.getElementById('profile_photo_preview').src = "data:image/jpg;base64," + decodeURI(encodeURI(jsondata.profile_picture))

我想做的是使java代码与swift和javascript中的代码相同。

我很快就知道,如果我删除 NSData.Base64DecodingOptions.ignoreUnknownCharacters 选项,它不会显示图像。

我该怎么做?

请给我建议。

最佳答案

尝试使用编码

java.io.ByteArrayOutputStream boas = new java.io.ByteArrayOutputStream();
Bitmap bm = ((android.graphics.drawable.BitmapDrawable) imageview1.getDrawable()).getBitmap();
bm.compress(Bitmap.CompressFormat.JPEG, 100, boas);

byte[] imageBytes = boas.toByteArray();

String img_str = Base64.encodeToString(imageBytes, Base64.DEFAULT);

并用解码

byte[] decoded1String = Base64.decode(img_str, Base64.DEFAULT); Bitmap decoded1Byte = BitmapFactory.decodeByteArray(decoded1String, 0, decoded1String.length);
imageview1.setImageBitmap(decoded1Byte);

关于javascript - Android 中的图像数据解码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50664379/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com