python以环状形式组合排列图片并输出的方法


Posted in Python onMarch 17, 2015

本文实例讲述了python以环状形式组合排列图片并输出的方法。分享给大家供大家参考。具体分析如下:

这段代码可以自定义一个空白画板,然后将指定的图片以圆环状的方式排列起来,用到了pil库,可以通过:
pip install pil 的方式安装。

具体代码如下:

# -*- coding: utf-8 -*-

__author__ = '3water.com'

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:/3water.com/images/1.png", "d:/3water.com/images/2.png", "d:/3water.com/images/3.png"] * 5

images = [Image.open(filename) for filename in imageFilenames]

arrangeImagesInCircle(img, images)

img.save("output.png")

希望本文所述对大家的Python程序设计有所帮助。

Python 相关文章推荐
总结Python编程中三条常用的技巧
May 11 Python
在Python的Django框架中使用通用视图的方法
Jul 21 Python
Python 中迭代器与生成器实例详解
Mar 29 Python
Python简单定义与使用二叉树示例
May 11 Python
Win10系统下安装labelme及json文件批量转化方法
Jul 30 Python
Python udp网络程序实现发送、接收数据功能示例
Dec 09 Python
基于pytorch的lstm参数使用详解
Jan 14 Python
Windows 下python3.8环境安装教程图文详解
Mar 11 Python
Python自定义聚合函数merge与transform区别详解
May 26 Python
在tensorflow以及keras安装目录查询操作(windows下)
Jun 19 Python
python matplotlib库的基本使用
Sep 23 Python
Python爬虫进阶之爬取某视频并下载的实现
Dec 08 Python
python将ip地址转换成整数的方法
Mar 17 #Python
python实现模拟按键,自动翻页看u17漫画
Mar 17 #Python
python通过pil为png图片填充上背景颜色的方法
Mar 17 #Python
python按照多个字符对字符串进行分割的方法
Mar 17 #Python
python通过floor函数舍弃小数位的方法
Mar 17 #Python
python常规方法实现数组的全排列
Mar 17 #Python
python标准算法实现数组全排列的方法
Mar 17 #Python
You might like
什么是调频(FM)、调幅(AM)、短波(SW)、长波(LW)
2021/03/01 无线电
php实现从ftp服务器上下载文件树到本地电脑的程序
2009/02/10 PHP
PHP按行读取、处理较大CSV文件的代码实例
2014/04/09 PHP
PHP临时文件的安全性分析
2014/07/04 PHP
PHP通过文件路径获取文件名的实例代码
2018/10/14 PHP
PHP array_reduce()函数的应用解析
2018/10/28 PHP
Thinkphp5.0框架使用模型Model的获取器、修改器、软删除数据操作示例
2019/10/11 PHP
Javascript 面向对象编程(coolshell)
2012/03/18 Javascript
window.parent与window.openner区别介绍
2012/04/12 Javascript
JS+CSS实现淡入式焦点图片幻灯切换效果的方法
2015/02/26 Javascript
Bootstrap嵌入jqGrid,使你的table牛逼起来
2016/05/05 Javascript
jQuery height()、innerHeight()、outerHeight()函数的区别详解
2016/05/23 Javascript
浅析Nodejs npm常用命令
2016/06/14 NodeJs
JS实现将数字金额转换为大写人民币汉字的方法
2016/08/02 Javascript
js在ie下打开对话窗口的方法小结
2016/10/24 Javascript
详解jQuery中的DOM操作
2016/12/23 Javascript
node.js + socket.io 实现点对点随机匹配聊天
2017/06/30 Javascript
对vuejs的v-for遍历、v-bind动态改变值、v-if进行判断的实例讲解
2018/08/27 Javascript
JavaScript实现轮播图效果
2020/10/30 Javascript
[02:37]TI8勇士令状不朽珍藏II视频展示
2018/06/23 DOTA
[58:59]完美世界DOTA2联赛PWL S3 access vs CPG 第一场 12.13
2020/12/16 DOTA
python创建只读属性对象的方法(ReadOnlyObject)
2013/02/10 Python
python抓取网页中的图片示例
2014/02/28 Python
Python多线程应用于自动化测试操作示例
2018/12/06 Python
通过pykafka接收Kafka消息队列的方法
2018/12/27 Python
python for和else语句趣谈
2019/07/02 Python
opencv中图像叠加/图像融合/按位操作的实现
2020/04/01 Python
django API 中接口的互相调用实例
2020/04/01 Python
Python 发送邮件方法总结
2020/08/10 Python
全球性的在线时尚男装零售商:boohooMAN
2016/12/17 全球购物
总务岗位职责
2013/11/19 职场文书
见习报告的格式
2014/10/31 职场文书
优秀班集体申报材料
2014/12/25 职场文书
2015年中秋晚会主持词
2015/07/01 职场文书
五年级作文之成长
2019/09/16 职场文书
从np.random.normal()到正态分布的拟合操作
2021/06/02 Python