panosteal/googlesteal/__init__.py

48 lines
1.2 KiB
Python

import PIL.Image
import urllib.request
import io
import math
import subprocess
import tempfile
import pathlib
import os
from stitching import stitch
def google_normalize(url):
'''
Takes the URL of any image in a google panorama and returns a string
with substitutable variables for image IDs.
:param url: URL of an image contained in a google panorama
:return: string with substitutable variables or False if URL invalid
'''
try:
with urllib.request.urlopen(url) as res:
assert res.getcode() == 200
parts = url.split("=")
return f"{parts[0]}=w16000"
except:
return False
def google_to_equirectangular(url, rotation=[0,0,0], resolution=[3840,1920]):
'''
Takes the URL of any image in a google panorama and returns a finished
stitched image.
:param url: Image URL
:return: PIL.Image object containing the final image
'''
if not "=x" in url:
raise ValueError(f"{url} does not seem to be a valid Google URL." % url)
schema = google_normalize(url)
res = urllib.request.urlopen(schema)
assert res.getcode() == 200
return PIL.Image.open(io.BytesIO(res.read()))
process_url = google_to_equirectangular