Scala 如何在Cassandra中存储和检索base64编码图像

Scala 如何在Cassandra中存储和检索base64编码图像,scala,cassandra-3.0,Scala,Cassandra 3.0,我正在以json消息发送base64格式的图像 image:[“数据:image/png;base64,iVBORw…”,“数据:image/png;base64,idfsd…”] 我想将此图像存储在Cassandra中。这个json以数组[String]的形式映射到我的模型 case class ImageArray( image: Array[String] } 我读过,为了在卡桑德拉存储图像,我需要ByteBuffer。因此,我使用ByteBuffer.wrap()将数组的不同索引转换为

我正在以
json
消息发送
base64
格式的图像

image:[“数据:image/png;base64,iVBORw…”,“数据:image/png;base64,idfsd…”]

我想将此图像存储在
Cassandra
中。这个
json
数组[String]
的形式映射到我的模型

case class ImageArray(
image: Array[String]
}
我读过,为了在卡桑德拉存储图像,我需要ByteBuffer。因此,我使用ByteBuffer.wrap()将数组的不同索引转换为ByteBuffer

ByteBuffer.wrap(model.image(0).getBytes()) //for the moment, I am taking only 1 image
我不知道如何将
字节缓冲符
转换回
字符串
。我可以从Cassandra中检索字节,如下所示

(row.getBytes("image"))

上面给了我一个
ByteBuffer
。如何将其转换为
字符串
,稍后我可以使用该字符串创建
数组[String]

虽然我能够解决它,但该方法非常慢,因此我放弃了将图像存储为字节并将其保存为字符串(base64)的想法,因为这是我从服务器获得的结果

谈到原始问题,为了解决问题,我做了一些修改

将模型中的数组更改为列表,因为Cassandra了解列表

case class ImageArray(
image: List[String]
}
通过创建自定义的
来映射到图像列表的json数组或图像将读取
-
(JsPath\“image”)。读取[list[String]

cassandra
中,存储图像数组的表模式是
image list,

一旦我在模型中有了这个列表,我就使用
.value(“image”,seqAsJavaList(((ByteBuffer.wrap(model.image(0.getBytes()).array().toList)::((ByteBuffer.wrap(model.image(1.getBytes()).array()))

在上面,我获取图像列表的第一个元素(一个字符串,它是索引0处图像的base64表示形式),使用
ByteBuffer.wrap
将其转换为字节,然后将
ByteBuffer
转换为
Array
,然后将其转换为
list
。这给了我第一张图片的
列表[Byte]
。我对图像(1)重复它,然后使用
将两个图像连接起来。然后我使用
seqAsJavaList
将这个
Scala
List
转换成
Java

注意:由于上述方法需要多次转换,因此不是最佳方法。相反,我决定将图像存储为List[String]

我已经完成了
数组((row.getBytes(“image”)).asCharBuffer().toString)
。这个看起来可以吗?我担心转换是否会因为使用不同的字符编码而不正确。我想不是因为我在同一平台上进行编码和解码(服务器端)