import imageio
image = imageio.imread('image.png')
M, N, C = image.shape
image = image.reshape((N, M, C)) # new shape here, I inverted M and N
imageio.imwrite("image.ico", image)
但是,请注意,像素的数量不能随reshape而改变,即总数,在本例中为M * N,一旦您重新形状,新的像素数量必须相同。
如果您想更改它,可以使用slicing,这里有一些例子in the documentation
我假设,您在打开生成的ICO文件时遇到问题,因为您使用的软件在打开ICO文件时只需要特定大小的方形图像!?不幸的是,似乎^{} 保存ICO文件时只将较大的维度设置为默认的16、24、。。。像素,当馈送非方形图像时。假设我们有这样一个形象:
我们有一些测试代码如下:
结果
image.ico
有六个维度为16 x 13
、24 x 19
的图像,依此类推如果你想解决这个问题,你应该事先适当调整你的图像大小,以得到一个正方形的图像。实际上,当使用} :
imageio
时,调整图像大小可能非常困难。有关详细信息,请参见this recent Q&A。如果您只是想在不保持纵横比的情况下获得方形图像,则可能需要使用^{现在,得到的
image.ico
有六个维度为16 x 16
、24 x 24
的图像,依此类推如果要保持图像的纵横比,需要为图像添加适当的边框。在那个问题上有分歧。您还可以仅使用NumPy添加奇特的透明边框:
现在,结果
image.ico
甚至有七个维度为16 x 16
,256 x 256
的图像,因为修改后的图像足够大您可以使用
reshape()
,这样您的代码就可以变成但是,请注意,像素的数量不能随
reshape
而改变,即总数,在本例中为M * N
,一旦您重新形状,新的像素数量必须相同。 如果您想更改它,可以使用slicing
,这里有一些例子in the documentation相关问题 更多 >
编程相关推荐