【问题标题】:not able to generate bitmap with the python imaging library无法使用 python 成像库生成位图
【发布时间】:2018-09-08 21:11:31
【问题描述】:

我正在尝试根据坐标、分辨率和灰度生成位图图像。基本上图像应该只在这些点区域内着色。我已经尝试过了,但我不断收到诸如“无法确定区域大小”之类的错误;使用 4 件箱'。这是我尝试过的:

from PIL import Image

img = Image.new('L', (1200, 800), 120)
img.paste([2, 3, -4, 4])
img.show()

【问题讨论】:

  • 您的问题不清楚。你想给灰度图像上色吗?您想将一张图片粘贴到另一张图片上,但您只有一张图片?
  • @MarkSetchell 让我们假设一个分辨率为 1200x800 的透明背景,我想在它上面绘制,该对象由 2 对具有灰度颜色的坐标定义。就是这样

标签: python python-imaging-library


【解决方案1】:

我认为你的意思是:

#!/usr/local/bin/python3
import numpy as np
from PIL import Image, ImageDraw

# Create empty canvas
im = Image.new('L', (1200, 800), 0)

# Create a draw context and draw rectangle at given position
draw = ImageDraw.Draw(im)
draw.rectangle(((100, 100), (1100,700)), fill='gray')

# Save result
im.save('result.png')


如果你想要一个透明的画布,并绘制一个实心形状,你可以使用:

im = Image.new('LA', (1200, 800), 0)

这将为您提供具有亮度(灰度)和 Alpha(透明度)的 2 通道图像。

然后绘制实心的中灰色矩形:

draw.rectangle(((100, 100), (1100,700)), fill=(128,255))

因为 128 位于 [0-255] 的中间,而 255 表示“不透明”。

【讨论】:

  • 谢谢。然而,是否可以将 draw.bitmap 用于 2 组坐标?显然它只需要 1 组,或者我如何将它转换为位图呢?
  • 对不起,我不明白。我在 cmets 中问过,如果您想在背景上粘贴第二张图像,为什么您只有一张图像,并且您说您想绘制一个对象 - 所以我画了一个明显的对象 - 一个矩形。你想绘制一个对象还是粘贴另一个图像?也许在您的问题中添加一张图片,显示您期望的结果...
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-09-05
  • 2017-01-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多