Python 将ndarray转换为Base64
用户上载图像,如果该用户没有其他图像要上载,则该图像将被保存。然后我们把这张照片切成两半。上半场又被挽救了。至于第二个图像,我们需要将其转换为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
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