我目前编码和解码图像到Base64.我通过使用流将图像编码为字符串来克服OOM的初始问题.
我现在的问题是我无法理解如何通过Gson将多个分辨率图像(5620 x 3747 - 4.92MB或3264 x 1836 - 1.35MB)的多个Base64编码字符串添加到JSON对象.目前Gson仅使用来自5312 x 2988 - 4.95 MB映像的2个Base64字符串抛出OOM异常.
我知道android可能只能为每个应用程序节省16/20Mb,因此这种转换必须超过限制.
如何将流中的Base64字符串写入JSON对象,该对象将包含发布到我的服务器所需的特定值?
是否更容易更改我的服务器以接受多部件请求而不是基于JSON的POJO与多个Base64字符串?我目前使用的是Volley,并没有官方的多部分请求以及IO流.
如果是压缩问题,在编码到Base64字符串之前,我应该对图像应用多少压缩?理想情况下,我希望失去任何质量但具有最佳压缩级别.
更多信息
我正在上传多个不同分辨率的图像,因为它是兼容性的测试.例如,我发送的所有图像都是在低分辨率和极高分辨率的设备上拍摄的,因为我的应用依赖于这些图像的功能.我试图证明我的应用程序可以处理任何图像(在某种程度上,主要是在移动设备上捕获的图像).
我知道有些图像可能太大,以至于将它们加载到内存中会导致异常.这是我稍后会尝试处理的.
在某些情况下,将上传的图像可以从1到200.
我正在努力寻找能够很好地扩展的最佳解决方案.
这是一个快速模型来创建一个完整大小的网页,但每当我测试它时,屏幕顶部会有一小块空间.
我怎样才能摆脱顶部的这个小空间?
HTML
<body>
<div id="container">
<header id="header">
<div class="header_container">
<h1 class="header_logo">Blog</h1>
<nav class="menu_nav">
</nav>
</div>
</header>
</div>
</body>
Run Code Online (Sandbox Code Playgroud)
CSS
body,html {
margin: 0;
height: 100%;
}
#container{
height: 100%;
width: 100%;
background-color: orange;
}
#header {
width: 100%;
height: 80px;
background-color: green;
}
.header_container{
margin-left: 50px;
margin-right: 50px;
}
Run Code Online (Sandbox Code Playgroud)