好的,我已经阅读了关于这个主题的所有问题和答案。我已经读了几天,但是没有一个方法对我有效,所以我有一个直接的问题。这段代码生成一个字符串。
public String getStringImage(Bitmap bmp){
ByteArrayOutputStream baos = new ByteArrayOutputStream();
bmp.compress(Bitmap.CompressFormat.JPEG, 100, baos);
byte[] imageBytes = baos.toByteArray();
input = Base64.encodeToString(imageBytes, Base64.DEFAULT);
return input;
}
这段代码可以从同一图片中生成另一个字符串,
<?php
$data = file_get_contents('Lake_mapourika_NZ.jpeg');
$nova = base64_encode($data);
echo $nova;
?>
当我在Java中将它们插入到这段代码中时:
public void decodeImage()
{
byte[] decodedByte = Base64.decode(input, Base64.DEFAULT);
bitmap = BitmapFactory.decodeByteArray(decodedByte, 0, decodedByte.length);
imageView.setImageBitmap(bitmap);
}
第一个字符串不起作用,第二个可以正常工作。为什么?为什么Java到Java不起作用,而PHP到Java可以正常工作?
当然,这两个字符串是不同的,这也是一个好问题。为什么它们从相同的位图生成时不同?对我来说,Java解码工作得很好,但编码不起作用。
我正在使用此代码将我的图片从应用程序发送到服务器,因此我不能每次都使用在线转换器进行编码。我没有收到任何错误消息,对于使用手机相机拍摄的图片,我会遇到内存不足异常。但是当将质量更改为50时,我会得到解码后的字符串,但它无法像通常那样工作。
是否有其他方法可以实现?
input
应该是一个本地变量,String input = ...
。这并不能解释错误,因此将字节保存到文件中,以查看compress
是否有效。也许在?>
后面会跟着一个换行符(通常是错误的),那么 Java 也需要一个显式的换行符"\r\n"
。 - Joop Eggen