numpy - CMYK 数组写入文本(.txt)文件并从文件(.txt)读取并创建图像
问题描述
我正在尝试将图像转换为 cmyk 数组并将这些数组写入文本文件。当我从同一个文件中读取并尝试显示它时,会出现错误。我想我犯了一些错误,但我找不到解决方案。下面的代码:
from PIL import Image
import numpy as np
imgs = Image.open('rgb.jpg').convert('CMYK')
imgs_image = np.array(imgs)
str2 =str(imgs_image)
f=open("rgb_real_cmyk.txt","w")
f.write(str2)
f.close()
fh = open("rgb_real_cmyk.txt","r")
string=fh.read()
file_image = np.array(string)
file_test = Image.fromarray(file_image, mode='CMYK')
file_test.save("file_image.jpeg")
错误:
“在 fromarray 中,大小 = 形状 [1],形状 [0]
IndexError:元组索引超出范围“
解决方案
我认为问题在于您只存储文件中所有像素的值,但不保存图像的尺寸。
所以,当你读回它时,如果你的图像是 8x10 像素,每个像素有 4 个 CMYK 值,你只会得到 8x10x4 值,这似乎是一个 320 元素的平面数组——而不是一个矩形图像。
我想您需要说明为什么要这样做,以及如果您想要更完整的答案,是否可以接受在文件开头存储图像尺寸。
然而,最接近的事情立即浮现在脑海numpy.savetxt("CMYK.txt", YourNumpyArray)
中,这仅适用于一维或二维阵列,而您的阵列是 3-D。最简单的解决方案可能如下所示。
我想您知道您可以将 CMYK 图像保存为易于查看的 TIF...
#!/usr/local/bin/python3
from PIL import Image
import numpy as np
img = Image.open('rgb.jpg').convert('CMYK')
img.save('result.tif')
推荐阅读
- docker - 为什么这个正则表达式在 docker 自动构建中不匹配这个字符串
- python - 是否有可以注入方法调用的 Python 模板系统?
- entity-framework - 实体框架拦截和修改日期
- spring-boot - 该工件在本地存储库中找到,但您已明确声明应从远程存储库下载它”
- reactjs - 状态更新后无法更新组件
- mysql - MySQL - ORDER BY 子句导致 SQL_CALC_FOUND_ROWS 选择不返回数据
- sql-server - 计算同一列中日期之间的差异
- c# - SubClass中的继承等价,如何与baseClass获得相同的结果?
- c# - 为什么 transform.hasChanged 总是正确的?(即,将 hasChanged 设置为 false 是谁的工作?)
- php - PHP: E: 找不到 php-zip 包