Python PIL 错误地解码 TIFF 颜色(使用不正确的色彩空间)?

2024-01-04

当我使用PIL==1.1.7加载 TIFF 图像时,颜色空间似乎错误:

这是怎么回事?

  • The .tiff是使用创建的convert test.jpg test.tiff(但其他 tiff 文件似乎也会发生)
  • 可以在以下位置找到:http://hul.wolever.net/dump/test.tiff http://hul.wolever.net/dump/test.tiff
  • 时的输出PIL.Image.DEBUG = True:


>>> from PIL import Image
>>> Image.DEBUG = True
>>> Image.open("/tmp/test.tiff").show()
tag: ImageWidth (256) - type: short (3) - value: (560,)
tag: ImageLength (257) - type: short (3) - value: (401,)
tag: BitsPerSample (258) - type: short (3) - value: (8, 8, 8)
tag: Compression (259) - type: short (3) - value: (7,)
tag: PhotometricInterpretation (262) - type: short (3) - value: (2,)
tag: FillOrder (266) - type: short (3) - value: (1,)
tag: DocumentName (269) - type: ascii (2) - value: /tmp/lemur.tiff
tag: StripOffsets (273) - type: long (4) - value: (8, 9282, 18712, 28312, 38000, 48730, 59052, 70406, 83010, 95978, 108967, 121029, 133136, 145555, 157411, 168289, 179433, 191157, 202954, 214664, 226914, 238919, 250547, 261871, 273282, 284453)
tag: Orientation (274) - type: short (3) - value: (1,)
tag: SamplesPerPixel (277) - type: short (3) - value: (3,)
tag: RowsPerStrip (278) - type: short (3) - value: (16,)
tag: StripByteCounts (279) - type: long (4) - value: (9274, 9430, 9600, 9688, 10730, 10322, 11354, 12604, 12968, 12989, 12062, 12107, 12419, 11856, 10878, 11144, 11724, 11797, 11710, 12250, 12005, 11628, 11324, 11411, 11171, 2541)
tag: XResolution (282) - type: rational (5) - value: ((1207959552, 16777216),)
tag: YResolution (283) - type: rational (5) - value: ((1207959552, 16777216),)
tag: PlanarConfiguration (284) - type: short (3) - value: (1,)
tag: ResolutionUnit (296) - type: short (3) - value: (1,)
tag: PageNumber (297) - type: short (3) - value: (0, 1)
tag: JPEGTables (347) - type: undefined (7) - value: ????C??

???}!1AQa"q2??#B??R??$3br?  
%&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz???????????????????????????????????????????????????????????????????????????
tag: YCbCrSubSampling (530) - type: short (3) - value: (2, 2)
*** Summary ***
- compression: jpeg
- photometric_interpretation: 2
- planar_configuration: 1
- fill_order: 1
- size: (560, 401)
format key: ('II', 2, 1, 1, (8, 8, 8), ())
- raw mode: RGB
- pil mode: RGB
  

这很可能是由于您的 TIFF 图像包含 Adob​​e Photoshop 生成的压缩 JPEG 数据,该数据使用特殊标记来指示正确的色彩空间。我猜 PIL 不知道这个标记(至少在 TIFF 嵌入的 JPEG 中),因此它假设图像位于 YCbCr 色彩空间中(我们可以在屏幕截图中看到)。

查看详细答案here https://stackoverflow.com/questions/8747904/extract-jpeg-from-tiff-file,我相信这正是你的情况。

您可能的解决方案是使用其他方法转换 JPEG(不压缩 JPEG 数据)。例如,如果 PIL 成功打开您的 JPEG,您可以使用 PIL 重写 TIFF:

from PIL import Image
img = Image.open("test.jpg")
tif = Image.new("RGB", img.size)
tif.paste(img)
tif.save('result.tiff')
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Python PIL 错误地解码 TIFF 颜色(使用不正确的色彩空间)? 的相关文章

随机推荐

  • Azure PageBlob 上传新文件:x-ms-blob-content-length 错误

    我正在尝试编写一个简单的 python 代码来将文件上传到 Azure PageBlob 我不确定我应该指定什么x ms blob content length因为我不断收到错误 文档 https learn microsoft com e
  • sessionStorage 中的 JWT 令牌 vs cookie?

    Stormpath 有很多博客文章讨论如何使用 cookie 来存储 JWT 而不是 sessionStorage localStorage https stormpath com blog where to store your jwts
  • C++中的图轴校准

    我正在二维图表中绘制一些浮点数据 我需要将图表的轴校准为看起来整洁的小单位 显然 这个单位根据数据的大小而变化 我正在尝试找到一种将轴划分为漂亮数字的好方法 例如 如果我的数据来自 1 3345 至 5 882 可以以 1 0 或 0 5
  • 如何根据父表自动更新子表中的列值?

    我的用户访问网络应用程序架构以两种方式分开 经理表 列 权限 员工表 列 权限 允许 其中 Manager 是超级管理员帐户 将用于订阅 我们的服务基于套餐类型 例如 基本 银 金 对于员工 该帐户将由经理创建 并且分享相同的 经理特权默认
  • 安装 pyspeckit 时 matplotlib 错误

    在尝试下载 Pyspeckit 一个天文学程序 时 我需要获取 matplotlib 才能使其工作 然而 当我尝试安装 matplotlib 时 cygwin 给了我错误 In file included from lib matplotl
  • 这是等待 Thread.finalization 并保持应用程序响应的正确方法

    实际上我正在使用这段代码并且工作正常 但我想知道这是否是正确的方法 while WaitForSingleObject MyThread Handle 0 WAIT TIMEOUT do Application ProcessMessage
  • 在 C# 中显示代理身份验证对话框

    为了访问互联网 我位于需要身份验证的代理后面 我知道将网络凭据传递给代理非常简单 如下所示 FtpWebRequest request FtpWebRequest Create new Uri ftp upload myserver com
  • 主成分分析降维

    我正在努力表演PCA http en wikipedia org wiki Principal component analysis将 900 个维度减少到 10 个 到目前为止 我有 covariancex cov labels V d
  • 如何将焦点设置在 ace 编辑器上?

    我在 jquery 选项卡界面中使用来自 ajax org 的 ace 编辑器组件 每个选项卡将包含一个单独的 ace 编辑器 每当我切换到新选项卡时 其中的编辑器都不会获得焦点 我可以通过绑定到 jquery UI 的 tabsshow
  • 如何将 NSUUID 表示为字符串?

    我怎样才能转换NSUUID to NSString NSString url self mysql process ESTIMOTE PROXIMITY UUID NSString mysql process NSUUID beacon i
  • 矩阵乘法的分而治之

    我无法让分而治之的矩阵乘法发挥作用 据我了解 您将大小为 nxn 的矩阵分成象限 每个象限为 n 2 然后执行以下操作 C11 A11 B11 A12 B21 C12 A11 B12 A12 B22 C21 A21 B11 A22 B21
  • 使用 C 语言堆栈的计算器

    我正在尝试用 c 创建一个计算器 它可以优先计算并获得正确的结果 例如 5 5 3 3 gt 9 1 2 3 gt 9 我下面的代码可以计算这些示例 但对于这样的事情 2 5 2 5 我的程序给出了错误的答案 我用的是2个堆栈 一种用于操作
  • Laravel API 注册用户 - 检查重复电子邮件

    我正在使用 Laravel 5 5 API 路线routes api php像这样注册新用户 Route post users function Request request user new User if Input get name
  • 未设置对象变量或 With 块变量(错误 91)

    我有以下代码 Sub AddSources Dim pubPage As Page Dim pubShape As Shape Dim hprlink As Hyperlink Dim origAddress As String Dim e
  • mac osx:无法使用 virtualenv

    我正在尝试使用 virtualenv 创建一个环境 virtualenv test New python executable in test bin python Error Errno 2 No such file or directo
  • jquery从外部页面循环链接到特定幻灯片?

    仔细研究了所有其他问题 但我无法弄清楚这一点 我有一个主页 其中包含我使用 jquery 循环插件的另一个页面的某些幻灯片 我需要做的是将主页上的链接直接链接到不是组中第一张幻灯片的幻灯片 没什么那么复杂 我的主页上有一个这样的链接 a h
  • PHP preg_replace 的 JavaScript 等效项

    我一直在寻找 PHP 的 js 等效项preg replace功能和我到目前为止发现的只是string replace 但是我不知道如何将我的正则表达式转换为 JavaScript 这是我的 PHP 代码 preg replace str
  • ios 7 模拟器不会为针对 ios 6.1 sdk 编译的应用程序提供回退用户界面

    我们的 ios6 1 sdk 编译的应用程序在 ios 6 1 iPhone 4 4s 和 5 设备上运行良好 当在 ios7 iphone 5s 上运行该应用程序时 用户界面仍然看起来像 ios 6 黑色按钮等 但我们对大部分内容都很好
  • 找不到协议socket.getprotobyname

    我正在尝试连接到rabbitMQ服务器 但它在与a的连接时始终失败socket error protocol not found错误 In 1 import pika In 2 pika BlockingConnection pika Co
  • Python PIL 错误地解码 TIFF 颜色(使用不正确的色彩空间)?

    当我使用PIL 1 1 7加载 TIFF 图像时 颜色空间似乎错误 这是怎么回事 The tiff是使用创建的convert test jpg test tiff 但其他 tiff 文件似乎也会发生 可以在以下位置找到 http hul w