Сшивание фрагментов изображения с использованием x, y, ширины и высоты приводит к смещению — что мне не хватает?Python

Программы на Python
Anonymous
Сшивание фрагментов изображения с использованием x, y, ширины и высоты приводит к смещению — что мне не хватает?

Сообщение Anonymous »

Я пытаюсь восстановить полную страницу газеты из нескольких фрагментов изображения.
Координаты каждого фрагмента закодированы в имени файла, например:
01____.jpg
Пример:

01_181.5_41_738_148.jpg
Из HTML эти фрагменты позиционируются с помощью CSS, например:


Я предположил, что эти фрагменты можно соединить вместе, чтобы восстановить всю страницу.
Я смотрю на https://epaper.janayugomonline.com/

Ожидаемое изображение такое.
Однако выходное изображение смещено:
Некоторые области перекрываются, Некоторые части отсутствуют, Окончательный макет не соответствует оригиналу страница
Идеально восстановленная полная страница.
import requests
from PIL import Image
from io import BytesIO

urls = [
"Изображение",
"Изображение",
"Изображение",
"Изображение",
"Изображение",
"Изображение",
"Изображение",
"Изображение",
"Изображение",
"Изображение",
"Изображение",
"Изображение"
]

tiles = []
max_w, max_h = 0, 0

for url in urls:
name = url.split("/")[-1].replace(".jpg", "")
_, x, y, w, h = name.split("_")

x, y, w, h = map(float, [x, y, w, h])

img = Image.open(BytesIO(requests.get(url).content))

tiles.append((img, round(x), round(y)))

max_w = max(max_w, round(x + w))
max_h = max(max_h, round(y + h))

canvas = Image.new("RGB", (max_w, max_h), (255, 255, 255))

for img, x, y in tiles:
canvas.paste(img, (x, y))

canvas.save("output.jpg")

Вернуться в «Python»