Python 将ndarray转换为Base64

Python 将ndarray转换为Base64,python,django,image-processing,Python,Django,Image Processing,用户上载图像,如果该用户没有其他图像要上载,则该图像将被保存。然后我们把这张照片切成两半。上半场又被挽救了。至于第二个图像,我们需要将其转换为Base64图像。然而,由于某种原因,我得到了这个错误:ValueError:ndarray不是C-连续的 img = q.choice_set.all()[0].img reader = misc.imread(img) height, width, _ = reader.shape with_cutoff = width // 2 s1 = reade

用户上载图像,如果该用户没有其他图像要上载,则该图像将被保存。然后我们把这张照片切成两半。上半场又被挽救了。至于第二个图像,我们需要将其转换为Base64图像。然而,由于某种原因,我得到了这个错误:
ValueError:ndarray不是C-连续的

img = q.choice_set.all()[0].img
reader = misc.imread(img)
height, width, _ = reader.shape
with_cutoff = width // 2
s1 = reader[:, :with_cutoff]
s2 = reader[:, with_cutoff:]
misc.imsave(settings.MEDIA_ROOT + "/" + img.name, s2)
validated_data["choiceimage"] = base64.b64encode(s2)

当我把它保存在数据库中时,我得到一个错误。我做错了什么?如何将numpy数组解码为base64?

如果使用2D数组并提取左半部分或右半部分,它在内存中将不再是连续的-行之间将存在间隙

x = np.arange(6).reshape(2,3)
给出
x

array([[0, 1, 2],
       [3, 4, 5]])
如果我们将中心列提取到
y

y = x[:,1:2]
array([[1],
       [4]])
给出
y

y = x[:,1:2]
array([[1],
       [4]])
但如果我们检查它在内存中是否连续:

y.flags['C_CONTIGUOUS']
给出:

False
True
解决方案是将列提取到连续数组中:

y = np.ascontiguousarray(x[:,1:2])
y.flags['C_CONTIGUOUS']
给出:

False
True