繁体   English   中英

将图片从Android应用存储到Datastore / Google Cloud Storage的最佳方法是什么?

[英]What is the best way to store image from Android app to Datastore/Google Cloud Storage?

我正在尝试将Google Maps快照(来自Android)存储到数据存储区中,但遇到一些麻烦:

快照是转换为字节数组的位图,我将其进行了字符串化,但由于代理字符不足而崩溃。

我通过将StringUtils.newStringUtf8(byteAray)更改为new String(byteArray, Charset.forName("ISO-8859-15"))来解决此问题。

现在,它不会保存我的实体,因为“错误413:请求太长”。

有关信息,这是我获取字节数组的方式:

    ByteArrayOutputStream stream = new ByteArrayOutputStream();
    bitmap.compress(Bitmap.CompressFormat.JPEG, 50, stream);
    byte [] bytes = stream.toByteArray();

那么,如何才能将该位图有效地存储到数据存储区(或其他解决方案)中,以将其返回到Android应用程序中的其他位置?

请注意,对于大型二进制对象,您最好将Blobstore APIGoogle Cloud Storage结合使用

如果您确定图像文件始终小于1MB,则可以使用Blob实体属性类型

您得到的错误:

错误413:请求过长

您可以通过在客户端中缩小快照来解决。 我敢肯定,现代手机的大多数快照都将超过1MB,因此您肯定会收到此错误,因为数据存储区只能接受1MB以下的Base64编码字符串。

我建议您在对图像进行编码之前将其收缩,然后将其发送到数据存储区。

如果您想保持原始大小,则另一种选择是使用Google Cloud Storage ,特别是针对您的情况,使用签名的上传URL,您可以在其中创建一个签名的URL ,然后将您的图片上传到其中

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM