本文实例讲述了python以环状形式组合排列图片并输出的方法。分享给大家供大家参考。具体分析如下:
这段代码可以自定义一个空白画板,然后将指定的图片以圆环状的方式排列起来,用到了pil库,可以通过:
pip install pil 的方式安装。
具体代码如下:
复制代码 代码如下:# -*- Coding: utf-8 -*-
__author__ = 'www.jb51.net'
import math
from PIL import Image
def arrangeImagesInCircle(masterImage,imagesToArrange):
imgWIDth,imgHeight = masterImage.size
#we want the circle to be as large as possible.
#but the circle shouldn't extend all the way to the edge of the image.
#If we do that,then when we paste images onto the circle,those images will partially fall over the edge.
#so we reduce the diameter of the circle by the wIDth/height of the wIDest/tallest image.
diameter = min(
imgWIDth - max(img.size[0] for img in imagesToArrange),
imgHeight - max(img.size[1] for img in imagesToArrange)
)
radius = diameter / 2
circleCenterX = imgWIDth / 2
circleCenterY = imgHeight / 2
theta = 2*math.pi / len(imagesToArrange)
for i in range(len(imagesToArrange)):
curimg = imagesToArrange[i]
angle = i * theta
dx = int(radius * math.cos(angle))
dy = int(radius * math.sin(angle))
#dx and dy give the coordinates of where the center of our images would go.
#so we must subtract half the height/wIDth of the image to find where their top-left corners should be.
pos = (
circleCenterX + dx - curimg.size[0]/2,
circleCenterY + dy - curimg.size[1]/2
)
masterImage.paste(curimg,pos)
img = Image.new("RGB",(500,500),(255,255,255))
#下面的三个图片是3个 50x50 的pngs 图片,使用了绝对路径,需要自己进行替换成你的图片路径
imagefilenames = ["d:/www.jb51.net/images/1.png","d:/www.jb51.net/images/2.png","d:/www.jb51.net/images/3.png"] * 5
images = [Image.open(filename) for filename in imagefilenames]
arrangeImagesInCircle(img,images)
img.save("output.png")
希望本文所述对大家的Python程序设计有所帮助。
您可能感兴趣的文章:Python2.7基于笛卡尔积算法实现N个数组的排列组合运算示例Python编程之黑板上排列组合,你舍得解开吗@L_419_3@python 排列组合之itertoolspython实现求解列表中元素的排列和组合问题 总结以上是内存溢出为你收集整理的python以环状形式组合排列图片并输出的方法全部内容,希望文章能够帮你解决python以环状形式组合排列图片并输出的方法所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)