PIL中倒置的tiff图像和光度解释标签?

时间:2013-05-01 19:25:33

标签: python python-imaging-library tiff

我正在使用Python的成像库从头开始创建黑白TIF图像并在其上绘制文本。在Windows 7上使用Python 2.7,PIL 1.1.7。

要创建每个图像,我使用此代码

def newBinaryImage(w,h):
  return Image.new("1",(w,h),1)

当我在任何Windows图像查看器中打开它们时,它们看起来很好。在我将它们上传到数据库中然后使用自定义GUI查看它们之后,它们在GUI查看器中看起来很好。但是,当我尝试从GUI打印它们时,它们会被反转并在黑色背景上打印为白色文本。 (在加载前打印时不会发生这种情况。)

在联系创建自定义软件的供应商后,他们告诉我们他们认为问题可能出在photometricinterpretation标签上,并且可以通过使用Group4压缩来解决。有没有办法在PIL中执行此操作,或者在创建图像时是否有任何可以/应该更改的内容?

这是我的一张图片上的Image.DEBUG:

>>>Image.open("1010.tif").show()
tag: ImageWidth (256) - type: short (3) - value: (1200,)
tag: ImageLength (257) - type: short (3) - value: (1600,)
tag: Compression (259) - type: short (3) - value: (1,)
tag: PhotometricInterpretation (262) type: short (3) - value: (1,)
tag: StripOffsets (273) - type: long (4) - value: (98,)
tag: RowsPerStrip (278) - type: short (3) - value: (1600,)
tag: StripByteCounts (279) - type: long (4) - value: (240000,)
*** Summary ***
- compression: raw
- photometric_interpretation: 1
- planar_configuration: 1
- fill_order: 1
- size: (1200,1600)
format key: ('II', 1, 1, 1, (1,), ())
- raw mode: 1
- pil mode: 1

2 个答案:

答案 0 :(得分:0)

我最终通过使用ImageMagick解决了这个问题。我所做的只是将每个文件从“tif”类型“转换”为类型“tif”,它解决了问题!似乎是PIL的压缩问题。

答案 1 :(得分:0)

最后几天有点棘手,但是我遇到了同样的问题。

通过更改枕头库的字典解决了问题。

我用过:

img = np.invert(np.array(PIL.Image.open(path_old).convert('1')))
img = PIL.Image.fromarray(img)
img.save(path_new, 'TIFF', compression='group3')

通过将光度参数设置为0(对于1bit图像),在PIL.TiffImagePlugin.py中的第一个反转并更改的行1377中

SAVE_INFO = {
# mode => rawmode, byteorder, photometrics,
#           sampleformat, bitspersample, extra
"1": ("1", II, 0, 1, (1,), None), #This line here...
"L": ("L", II, 1, 1, (8,), None),
"LA": ("LA", II, 1, 1, (8, 8), 2),
"P": ("P", II, 3, 1, (8,), None),
"PA": ("PA", II, 3, 1, (8, 8), 2),
"I": ("I;32S", II, 1, 2, (32,), None),
"I;16": ("I;16", II, 1, 1, (16,), None),
"I;16S": ("I;16S", II, 1, 2, (16,), None),
"F": ("F;32F", II, 1, 3, (32,), None),
"RGB": ("RGB", II, 2, 1, (8, 8, 8), None),
"RGBX": ("RGBX", II, 2, 1, (8, 8, 8, 8), 0),
"RGBA": ("RGBA", II, 2, 1, (8, 8, 8, 8), 2),
"CMYK": ("CMYK", II, 5, 1, (8, 8, 8, 8), None),
"YCbCr": ("YCbCr", II, 6, 1, (8, 8, 8), None),
"LAB": ("LAB", II, 8, 1, (8, 8, 8), None),
"I;32BS": ("I;32BS", MM, 1, 2, (32,), None),
"I;16B": ("I;16B", MM, 1, 1, (16,), None),
"I;16BS": ("I;16BS", MM, 1, 2, (16,), None),
"F;32BF": ("F;32BF", MM, 1, 3, (32,), None),

}