当前位置: 首页 > 面试题库 >

如何使用PIL读取原始图像?

邹华皓
2023-03-14
问题内容

我有一个原始图像,其中每个像素对应一个16位无符号整数。我正在尝试使用PIL Image.fromstring()函数进行读取,如以下代码所示:

if __name__ == "__main__":
    if (len(sys.argv) != 4):
        print 'Error: missing input argument'
        sys.exit()

    file = open(sys.argv[1], 'rb')
    rawData = file.read()
    file.close()

    imgSize = (int(sys.argv[2]), int(sys.argv[3]))

    # Use the PIL raw decoder to read the data.
    #   - the 'F;16' informs the raw decoder that we are reading a little endian, unsigned integer 16 bit data.
    img = Image.fromstring('L', imgSize, rawData, 'raw', 'F;16')

    im.save('out.png')

PIL文档通知fromstring()函数的第一个参数为’mode’。但是,在查阅文档并进行谷歌搜索时,我无法找到有关该参数真正含义的详细信息(我相信它与色彩空间或类似的东西有关)。有谁知道我在哪里可以找到有关fromstring()函数以及mode参数意味着什么的更详细的参考?


问题答案:

具体文档位于http://effbot.org/imagingbook/concepts.htm:

模式

图像的模式定义图像中像素的类型和深度。当前版本支持以下标准模式:

  • 1(1位像素,黑白,每字节存储一个像素)
  • L(8位像素,黑白)
  • P(8位像素,使用调色板映射到任何其他模式)
  • RGB(3x8位像素,真彩色)
  • RGBA(4x8位像素,带透明蒙版的真彩色)
  • CMYK(4x8位像素,彩色分离)
  • YCbCr(3x8位像素,彩色视频格式)
  • I(32位带符号整数像素)
  • F(32位浮点像素)

PIL还为某些特殊模式提供了有限的支持,包括LA(带有alpha的L),RGBX(带有填充的真彩色)和RGBa(带有预乘alpha的真彩色)。



 类似资料:
  • 问题内容: 如何使用PIL或任何其他Python库获取图片边的大小? 问题答案: 根据文档。

  • 问题内容: 如何使用PIL检测PNG图像是否具有透明的Alpha通道? 通过上面的代码,我们知道PNG图像是否不具有Alpha通道,但是如何获得Alpha值? 我没有在PIL网站上描述的img.info词典中找到“透明”键 我正在使用Ubuntu和zlib1g,已经安装了zlibc软件包。 问题答案: 要获取RGBA图像的alpha层,您需要做的是: 要么 有一种设置Alpha层的方法: 透明度键

  • 问题内容: 我刚刚使用Python图像库(PIL)进行了一些图像处理,这是我之前发现的用于执行图像的傅立叶变换的文章,但是我无法使用save函数。整个代码运行良好,但不会保存生成的图像: 我得到的错误如下: 如何使用Pythons PIL保存图像? 问题答案: 已解决有关文件扩展名的错误,您可以使用(不带点)或将输出名称与扩展名一起传递。现在要处理该错误,您需要在频域中适当地修改数据以将其保存为整

  • What follows is the original PIL 1.1.7 README file contents. The Python Imaging Library $Id$ Release 1.1.7 (November 15, 2009) ==================================================================== Th

  • 本文向大家介绍使用js获取图片原始尺寸,包括了使用js获取图片原始尺寸的使用技巧和注意事项,需要的朋友参考一下 浏览器中显示的图片大小未必是他真实的高和宽,比如像下面这样,我们给他加上宽和高的样式 <img src="IE.png" style="width:25px;height:25px;">   这样在浏览器中显示的大小就是25px。那么我们如何获取图片的真实大小呢?,下面的代码就实现了这个

  • 问题内容: 我想创建一个Python程序,该程序需要多行用户输入。例如: 如何接收多行原始输入? 问题答案: 要将每一行作为字符串获取,你可以执行以下操作: Python 3: