python组合图怎样让x轴旋转45度,python以环状形式组合排列图片并输出的方法

本文实例讲述了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程序设计有所帮助。

总结

如果觉得编程之家网站内容还不错,欢迎将编程之家网站推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值