gpt4 book ai didi

google-maps - 将图像粘在一起

转载 作者:行者123 更新时间:2023-12-01 13:28:57 24 4
gpt4 key购买 nike

我刚刚尝试使用 Google Map Buddy从谷歌地图获取卫星图像。此应用程序首先从谷歌地图下载小图像,然后将它们粘在一起形成新图像。我不得不等待大约 2 个小时才能将图像下载到我的计算机上,看起来它下载了所有图像(22,194 张图像),但随后该应用程序告诉我它无法将它们粘在一起。当我再次启动应用程序时,我虽然这个应用程序会在我的 comp 上重复使用图像,但它会再次开始下载它们。所以我不得不停止这个过程,问问你们,伙计们,你们是否知道我如何拼出这个拼图。

这些图像的命名模式是这样的:

x=92651y=48130zoom=17.png
x=92652y=48130zoom=17.png
x=92653y=48130zoom=17.png
x=92654y=48130zoom=17.png
x=92655y=48130zoom=17.png
...
...
x=92664y=48131zoom=17.png
x=92665y=48131zoom=17.png
x=92666y=48131zoom=17.png
x=92667y=48131zoom=17.png
...
...
x=92689y=48132zoom=17.png
x=92690y=48132zoom=17.png
x=92691y=48132zoom=17.png
x=92692y=48132zoom=17.png
x=92693y=48132zoom=17.png

如何使用一些简单的脚本语言以编程方式将它们组合在一起?我可以访问 Mac 和 Windows 系统,并且可以安装任何简单的脚本语言。

谢谢

最佳答案

你可以使用 PythonPython Imaging Library (PIL) .

首先,我会列出文件名及其坐标。使用正则表达式从文件名中提取整数坐标并将它们存储在字典列表中:

>>> filename = 'x=92664y=48131zoom=17.png'
>>> imagePattern = re.compile(r'^x=(\d{5})y=(\d{5})zoom=17.png$')
>>> x,y = map(int, imagePattern.search(filename).groups())
>>> {'x':x, 'y':y, 'filename':filename}
{'y': 48131, 'x': 92664, 'filename': 'x=92664y=48131zoom=17.png'}

拥有字典列表可以让您根据任一维度对它们进行排序:

tileListSortedByX = sorted(tileList, key = lambda i: i["x"])

并过滤它们:

fileListWhereX48131 = [tile for tile in tileList if tile["x"]==48131]

通过这两个操作,您可以轻松想象 for 循环逐行遍历图 block 。

您需要做的最后一件事是创建一个大的空图像(使用 PIL),您将在其中粘贴小图 block 图像。它的大小将是图 block 大小的倍数。

>>> from PIL import Image
>>> bigImage = Image.new('RGB',(300,300),(255,255,255))
#creates a white 300x300 image

将小图像粘贴到大图像中如下所示:

>>> smallImage = Image.open(tile["filename"])
>>> bigImage.paste(smallImage,(0,0))

希望你明白了。

关于google-maps - 将图像粘在一起,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1240427/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com