Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/191.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何通过android从rails读取base64编码的图片_Android_Ruby On Rails_Ruby_Base64 - Fatal编程技术网

如何通过android从rails读取base64编码的图片

如何通过android从rails读取base64编码的图片,android,ruby-on-rails,ruby,base64,Android,Ruby On Rails,Ruby,Base64,我想从RubyonRails向android发送一张base64编码的图片。 将数据发送到rails包括图片编码和解码工作,从rails返回到android的数据传输也工作,但我无法解码图片,这是rails编码的。我总是在下面标记的行中得到NullpointerException: imageOutFile = new FileOutputStream(file); byte[] bytes = Base64.decode(imageString, Base64.URL_SAFE); Bitma

我想从RubyonRails向android发送一张base64编码的图片。 将数据发送到rails包括图片编码和解码工作,从rails返回到android的数据传输也工作,但我无法解码图片,这是rails编码的。我总是在下面标记的行中得到NullpointerException:

imageOutFile = new FileOutputStream(file);
byte[] bytes = Base64.decode(imageString, Base64.URL_SAFE);
Bitmap bitmap = BitmapFactory.decodeByteArray(bytes, 0, bytes.length);
**bitmap.compress(Bitmap.CompressFormat.JPEG, 100, imageOutFile);**
编码字符串如下所示(它是最短的):

另一个字符串是:

_9j_4AAQSkZJRgABAQEAAQABAAD_2wBDAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQH_2wBDAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQH_wAARCAHgAoADASIAAhEBAxEB_8QAHAABAQEBAQEBAQEAAAAAAAAAAAoICQcGAgED_8QARRAAAQIBCAYIBAQEBwACAwAAAAYHBQEECAkZOIe3AxQVFqfWAhhWV1iWl9cXaNXnERIjJRM2VfAkJic1UZSkUmchMjf_xAAXAQEBAQEAAAAAAAAAAAAAAAAACQEH_8QAMxEBAAAEAwUGBQMFAAAAAAAAAAEGB1YCGJYDcbHV1ggXQUam8AURFjFRYaG1IYGRxcb_2gAMAwEAAhEDEQA_AIPwAAAAAAACo6rguPM3iPm-vCXEqOq4LjzN4j5vrwDbQAAAAAAABLnWM33Hqw4yoQ5UYS51jN9x6sOMqEOBiMAAAAAAAAqOq4LjzN4j5vrwlxKjquC48zeI-b68A20AAAAAAAAS51jN9x6sOMqEOVGEudYzfcerDjKhDgYjAAAAAAAAKjquC48zeI-b68JcSo6rguPM3iPm-vANtAAAAAAAAEudYzfcerDjKhDlRhLnWM33Hqw4yoQ4GIwAAAAAAACo6rguPM3iPm-vCXEqOq4LjzN4j5vrwDbQAAAAAAABLnWM33Hqw4yoQ5UYS51jN9x6sOMqEOBiMAAAAAAAAqOq4LjzN4j5vrwlxKjquC48zeI-b68A20AAAAAAAAS51jN9x6sOMqEOVGEudYzfcerDjKhDgbYsbvmb4PfdIWN3zN8HvukdtABxLsbvmb4PfdIWN3zN8HvukdtABxLsbvmb4PfdIWN3zN8HvukdtABxLsbvmb4PfdId
在Logcat中,解码失败后,我收到如下消息:

--- decoder->decode returned false
我使用以下方法对字符串进行编码,并将带有json对象的字符串发送到android。这张照片是用CarrierWave上传器上传的

Base64.urlsafe_encode64(File.read("public#{picture_path.to_s}"))

我必须读取二进制文件(“rb”),然后对其进行编码

Base64.encode64(File.open("public#{picture_path.to_s}", "rb") {|io| io.read})

手动解码提供的示例(调整以补偿URL安全编码后)似乎无法生成有效图像。我可以看到JPEG头,但实际上无法将文件作为图像打开。我添加了另一个由rails生成的字符串。我“我试图弄清楚,是安卓阅读还是rails编码是问题所在。好吧,我还在努力解决这个问题,但我发现了一些新东西。rails编码似乎不像你说的那样有效。当我用android将这个字符串发送到rails时,我得到了您描述的结果。但是,当我将用android创建的编码字符串从rails发送到android时,我也没有得到正确的结果。所以我仍然不知道字符串是否有效,或者是否有其他错误。好吧,我可能遇到了两个问题。在安卓系统上保存图片,它已经起作用了,而且不知何故它还在起作用,但不是我想要的方式。关于编码问题,我的建议是从图片中完全删除Android应用程序(因为它与实际问题无关)。取而代之的是,将Ruby生成的编码字符串插入类似的代码中,直到它们正确输出。然后(也只有那时)将其挂回Android应用程序。请注意,我链接到的解码器不使用/支持您正在使用的“url安全”base64变体。如果是解决方案,您可以接受自己的答案。“绿钩”是对用户友好性的改进@他可以,但我想他必须先等48小时。
Base64.encode64(File.open("public#{picture_path.to_s}", "rb") {|io| io.read})