Python PIL 中 16 位无符号原始二进制图像文件的模式是什么

问题描述 投票:0回答:1

您好,我正在使用 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,并以十六进制编写。

谢谢!

python image python-imaging-library binary-data grayscale
1个回答
0
投票

PIL 的所有有效模式都列在源文件

unpack.c
中,靠近文件底部。我会从包含
16
的内容开始。

根据您的编辑,还存在其他问题。首先,PIL.Image 需要确定用于写出文件的编码器,它使用文件扩展名来完成此操作。您的

.bin
文件扩展名是非标准的,因此无法知道要使用哪种格式。尝试类似
.png

第二个问题是并非每种文件类型都支持每种图像格式。您可能需要在保存之前转换图像。

changed.convert('L').save(saveFile)

鉴于您最后的评论,您只想将值写回原始格式文件。您可以尝试使用

'raw'
格式或直接使用
tostring
自行写入文件。

changed.save(saveFile, 'raw')
© www.soinside.com 2019 - 2024. All rights reserved.