javascript Python(枕形)或JS(画布)-如何分割图像并将画布的右边缘作为镜像包裹

5jvtdoz2  于 2023-01-04  发布在  Java
关注(0)|答案(1)|浏览(106)

我试图分割成碎片的图像,并获得相同的效果,因为在下面的照片使用HTML,CSS和JS或与Python库枕头。
原始图像:input
结果:result
到目前为止,我已经尝试使用HTML和context.drawImage()函数。我能够将图像分割成碎片,但我需要将每一个碎片的右边缘作为镜像包裹,所以可以说它看起来像3d 'ish。我也尝试过Python中的Pillow,我能够再次将图像分割成碎片,但我找不到一种方法来获得边缘效果。
下面是python代码示例:

from PIL import Image

# Open the image
image = Image.open('image.jpeg')

# Divide the image into panels (assuming 3 panels for this example)
width, height = image.size
panel_width = width // 3
panel_height = height
panel1 = image.crop((0, 0, panel_width, panel_height))
panel2 = image.crop((panel_width, 0, panel_width * 2, panel_height))
panel3 = image.crop((panel_width * 2, 0, panel_width * 3, panel_height))

# Add a margin to the right side of each panel
margin = 10

panel1_with_margin = Image.new('RGB', (panel1.width + margin, panel1.height), (255, 255, 255))
panel1_with_margin.paste(panel1, (0, 0))
panel2_with_margin = Image.new('RGB', (panel2.width + margin, panel2.height), (255, 255, 255))
panel2_with_margin.paste(panel2, (0, 0))
panel3_with_margin = Image.new('RGB', (panel3.width + margin, panel3.height), (255, 255, 255))
panel3_with_margin.paste(panel3, (0, 0))

# Combine the panels into a single image
total_width = panel1_with_margin.width + panel2_with_margin.width + panel3_with_margin.width
max_height = max(panel1_with_margin.height, panel2_with_margin.height, panel3_with_margin.height)
combined_image = Image.new('RGB', (total_width, max_height), (255, 255, 255))
combined_image.paste(panel1_with_margin, (0, 0))
combined_image.paste(panel2_with_margin, (panel1_with_margin.width, 0))
combined_image.paste(panel3_with_margin, (panel1_with_margin.width + panel2_with_margin.width, 0))

#Add mirroring and 3d effect here
#...Missed part of the code...

# Save the combined image
combined_image.save('combined_image.jpg')

先谢了!

pftdvrlh

pftdvrlh1#

这里有很多在命令行使用ImageMagick的图像失真、3D立方体和3D盒子的例子。
如果你找到了可以在命令行上使用的东西,你可以在Python中使用wand来做同样的事情,wand是一个绑定到ImageMagick的ctypes。

相关问题