您好,我正在使用 Python 图像库对图像进行小型转换。该图像是具有 16 位无符号整数的原始二进制文件。由于某种原因,我无法让 python 工作,它总是给我以下错误:
Traceback (most recent call last):
File "C:\Users\Patrick\workspace\colorCorrect\src\editGrayscale.py", line 24, in <module>
changed.save(saveFile)
File "C:\Python27\lib\site-packages\PIL\Image.py", line 1423, in save
raise KeyError(ext) # unknown extension
KeyError: '.bin'
我的代码如下:
import Image
#file to save: C:\Users\name\imagedata\visiblespec.bin
fileName = raw_input("Enter a file name: ")
saveFile = raw_input("Enter a new save file name: ")
with open(fileName, 'rb') as f:
im = Image.fromstring('L', (3032, 2016), f.read()) # also try 'L;16B', 'I;16', and 'I;16B'
changed = im.point(lambda i: i/2)
更改.保存(保存文件)
我的图像又是一个灰度 16 位无符号整数,大约 11 mbs,并以十六进制编写。
谢谢!
unpack.c
中,靠近文件底部。我会从包含 16
的内容开始。
根据您的编辑,还存在其他问题。首先,PIL.Image 需要确定用于写出文件的编码器,它使用文件扩展名来完成此操作。您的
.bin
文件扩展名是非标准的,因此无法知道要使用哪种格式。尝试类似.png
。
第二个问题是并非每种文件类型都支持每种图像格式。您可能需要在保存之前转换图像。
changed.convert('L').save(saveFile)
鉴于您最后的评论,您只想将值写回原始格式文件。您可以尝试使用
'raw'
格式或直接使用 tostring
自行写入文件。
changed.save(saveFile, 'raw')