我想创建一个用于制作宾果游戏的程序,除了将文本(范围可以从单个单词到甚至整个句子)放入每个字段之外,我已经设置了所有内容。我将如何包装该文本并调整字体大小以使其适合每个字段?
我以这种方式将坐标存储在 x 轴和 y 轴中。
rects= [[715, 49], [716, 49], [711, 50], [712, 50], [713, 50],...]
image= cv2.imread("some_image.jpg")
Run Code Online (Sandbox Code Playgroud)
如何将浅透明的彩色图层添加到存储rects在image类似于下面汽车顶部的蓝色图层的坐标中?
我有以下示例,我希望使用 Pillow 调整图像大小。
正如您所看到的,我有用户传入的新宽度,但没有高度。我如何计算出该图像的新高度,同时保持相同的纵横比?
图像不是正方形,而是矩形,因此高度和宽度不会相同。
orig_image = Image.open(get_full_path(file.relative_path))
new_width = int(request.args.get('w'))
# TODO resize properly, we need to work out new image height
resized_image = orig_image.resize((new_width, ), Image.ANTIALIAS)
Run Code Online (Sandbox Code Playgroud) 我正在使用 PIL 创建一个简单的 GIF 动画:
from PIL import Image, ImageDraw, ImageFont
images = []
for x, i in enumerate(range(10)):
image = Image.new(mode="RGB", size=(320, 60), color="orange")
draw = ImageDraw.Draw(image)
fnt = ImageFont.truetype('font.ttf', size=10)
draw.text((10, 10), ("%s" % x), fill=(0, 0, 255), font=fnt)
images.append(image)
images[0].save("result/pil.gif", save_all=True, append_images=images[1:], duration=1000, loop=0, format="GIF")
Run Code Online (Sandbox Code Playgroud)
问题是,每当我使用 Draw.text 时,图像的背景就会出现某种白色:
我发现一些信息,我必须使用第一帧中的 getpalette 和所有其他帧的 putpalette ,如下所示:
for x, i in enumerate(range(10)):
image = Image.new(mode="RGB", size=(320, 60), color="orange")
if x == 0:
palette = image.getpalette()
else:
image.putpalette(palette)
Run Code Online (Sandbox Code Playgroud)
但它只是给了我:ValueError: illegal image …
我正在尝试编写一个Python程序,它接受输入图像(例如JPEG)并生成“地球仪组件”输出图像,类似于le Paper Globe。本质上,如果输出图像被打印、剪切、折叠和粘合,人们应该获得投影到粗糙球体上的原始图像。
该程序会将输入图像划分为 32 个(8 个水平,4 个垂直)矩形,然后将每个矩形映射到一些精心选择的梯形上,或者更一般地说,映射到四边形上。我找到了一种将四边形映射到正方形的Pillow/PIL 方法,但找不到将矩形映射到四边形的方法。
有谁知道如何在Python中将输入图像的矩形映射到输出图像的四边形上?我更喜欢 Pillow/PIL,但任何可以打开和保存 JPEG 的库都可以。
我正在尝试从JPG图像中提取 GPS 坐标,但我没有获得太多信息pillow。
这是我的第一次尝试:
from PIL import Image
from PIL.ExifTags import TAGS
my_img = Image.open("IMG_0547.jpg")
exif_data = my_img.getexif()
for tag_id in exif_data:
tag = TAGS.get(tag_id, tag_id)
data = exif_data.get(tag_id)
print(f"{tag:16}: {data}")
Run Code Online (Sandbox Code Playgroud)
输出:
TileWidth : 512
TileLength : 512
GPSInfo : 1996
ResolutionUnit : 2
ExifOffset : 216
Make : Apple
Model : iPhone XS
Software : 13.6
Orientation : 1
DateTime : 2020:08:13 21:01:41
XResolution : 72.0
YResolution : 72.0
Run Code Online (Sandbox Code Playgroud)
从这里下载图像
我也尝试过使用pyexiv2,但只有一行代码出现此错误
metadata …
我有这个图像:
并且,想像这样剪掉透明背景:
使用 PIL 将会是:
from PIL import Image
im = Image.open("image")
im.getbbox()
im2 = im.crop(im.getbbox())
im2.save("result")
Run Code Online (Sandbox Code Playgroud)
但是,如何使用 OpenCV 变体来做到这一点?
到目前为止,我一直在使用 PIL 和 requests 库下载某些维基百科图像,没有出现任何问题。在某些时候,某处发生了更改,现在我在尝试下载和加载以下图像时收到错误:
from PIL import Image
import requests
url_1 = "https://upload.wikimedia.org/wikipedia/commons/thumb/e/ea/" \
+ "Van_Gogh_-_Starry_Night_-_Google_Art_Project.jpg/2728px-Van_Gogh_-_Starry_Night_-_Google_Art_Project.jpg"
#url_2 = "https://upload.wikimedia.org/wikipedia/commons/9/9d/The_Scream_by_Edvard_Munch%2C_1893_-_Nasjonalgalleriet.png"
#url_3 = "https://upload.wikimedia.org/wikipedia/en/8/8f/Pablo_Picasso%2C_1909-10%2C_Figure_dans_un_Fauteuil_%28Seated_Nude%" \
# + "2C_Femme_nue_assise%29%2C_oil_on_canvas%2C_92.1_x_73_cm%2C_Tate_Modern%2C_London.jpg"
response = requests.get(url_1, stream=True)
img = Image.open(response.raw)
Run Code Online (Sandbox Code Playgroud)
以及由此产生的错误消息:
---------------------------------------------------------------------------
UnidentifiedImageError Traceback (most recent call last)
<ipython-input-2-9f0ecb1762aa> in <module>()
13
14 response = requests.get(url_1, stream=True)
---> 15 img = Image.open(response.raw)
/usr/local/lib/python3.7/dist-packages/PIL/Image.py in open(fp, mode)
2894 warnings.warn(message)
2895 raise UnidentifiedImageError(
-> 2896 "cannot identify image file %r" % (filename if filename else fp)
2897 ) …Run Code Online (Sandbox Code Playgroud) 我被困在这个问题上,因为我不太确定如何提出这个问题,所以这是我最好的尝试!
我有一个元组列表,代表特定时间戳的温度读数。
[
(datetime.datetime(2022, 11, 30, 8, 25, 10, 261853), 19.82),
(datetime.datetime(2022, 11, 30, 8, 27, 22, 479093), 20.01),
(datetime.datetime(2022, 11, 30, 8, 27, 36, 984757), 19.96),
(datetime.datetime(2022, 11, 30, 8, 36, 46, 651432), 21.25),
(datetime.datetime(2022, 11, 30, 8, 41, 27, 230438), 21.42),
...
(datetime.datetime(2022, 11, 30, 11, 57, 4, 689363), 17.8)
]
Run Code Online (Sandbox Code Playgroud)
正如您所看到的,记录之间的差异无处不在 - 有些相隔几秒钟,而另一些则相隔几分钟。
从这些中,我想创建一个新的元组列表(或其他数据结构 - 我很高兴使用 NumPy 或 Pandas),其中时间戳值恰好每 5 分钟一次,而温度读数则计算为该时间戳的假设值鉴于可用的数据。像这样的东西:
[
(datetime.datetime(2022, 11, 30, 8, 25, 0, 0), ??),
(datetime.datetime(2022, 11, 30, 8, 30, …Run Code Online (Sandbox Code Playgroud) 我想用Pycairo生成一个动态创建的png图像,然后用它来设置Django.我读到这个:使用Django提供动态生成的图像.
有没有办法将Pycairo表面的数据直接传输到HTTP响应中?我现在这样做:
data = surface.to_rgba()
im = Image.frombuffer ("RGBA", (width, height), data, "raw", "RGBA", 0,1)
response = HttpResponse(mimetype="image/png")
im.save(response, "PNG")
return response
Run Code Online (Sandbox Code Playgroud)
但它实际上不起作用,因为没有to_rgba调用(这个调用我发现使用谷歌代码,但不起作用).
编辑:to_rgba可以用正确的调用get_data()替换,但我仍然想知道我是否可以完全绕过PIL.