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函数传参是传值还是传引用
Jan 16 Python
Python之pandas读写文件乱码的解决方法
Apr 20 Python
OpenCV搞定腾讯滑块验证码的实现代码
May 18 Python
tensorflow中tf.slice和tf.gather切片函数的使用
Jan 19 Python
Python ORM编程基础示例
Feb 02 Python
Python loguru日志库之高效输出控制台日志和日志记录
Mar 07 Python
Python爬虫爬取电影票房数据及图表展示操作示例
Mar 27 Python
Ubuntu中配置TensorFlow使用环境的方法
Apr 21 Python
Python如何使用PIL Image制作GIF图片
May 16 Python
tensorflow使用L2 regularization正则化修正overfitting过拟合方式
May 22 Python
python使用tkinter实现透明窗体上绘制随机出现的小球(实例代码)
May 17 Python
Python 数据可视化之Seaborn详解
Nov 02 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
php生成静态页面的简单示例
2014/04/17 PHP
CI使用Tank Auth转移数据库导致密码用户错误的解决办法
2014/06/12 PHP
PHP Hash算法:Times33算法代码实例
2015/05/13 PHP
php多重接口的实现方法
2015/06/20 PHP
Asp.net下使用Jquery Ajax传送和接收DataTable的代码
2010/09/12 Javascript
jQuery实现表头固定效果的实例代码
2013/05/24 Javascript
JS常用正则表达式总结
2013/11/12 Javascript
JS和JQUERY获取页面大小,滚动条位置,元素位置(示例代码)
2013/12/14 Javascript
推荐 21 款优秀的高性能 Node.js 开发框架
2014/08/18 Javascript
用javascript关闭本窗口技巧小结
2014/09/05 Javascript
jQuery对象初始化的传参方式
2015/02/26 Javascript
AngualrJS中每次$http请求时的一个遮罩层Directive
2016/01/26 Javascript
浅谈javascript运算符——条件,逗号,赋值,()和void运算符
2016/07/15 Javascript
js滚轮事件兼容性问题需要注意哪些
2016/11/15 Javascript
在Vue组件化中利用axios处理ajax请求的使用方法
2017/08/25 Javascript
vue几个常用跨域处理方式介绍
2018/02/07 Javascript
解决linux下node.js全局模块找不到的问题
2018/05/15 Javascript
layer.close()关闭进度条和Iframe窗的方法
2018/08/17 Javascript
webpack的tree shaking的实现方法
2019/09/18 Javascript
mac系统安装Python3初体验
2018/01/02 Python
Python爬取十篇新闻统计TF-IDF
2018/01/03 Python
使用CodeMirror实现Python3在线编辑器的示例代码
2019/01/14 Python
Python人工智能之路 jieba gensim 最好别分家之最简单的相似度实现
2019/08/13 Python
pytorch 共享参数的示例
2019/08/17 Python
GDAL 矢量属性数据修改方式(python)
2020/03/10 Python
新建文件时Pycharm中自动设置头部模板信息的方法
2020/04/17 Python
Python改变对象的字符串显示的方法
2020/08/01 Python
python3 中使用urllib问题以及urllib详解
2020/08/03 Python
关于webview适配H5上传照片或者视频文件的方法
2020/11/04 HTML / CSS
网络工程师的自我评价
2013/10/02 职场文书
学生吸烟检讨书
2014/09/14 职场文书
优秀大学生事迹材料
2014/12/24 职场文书
小学六一儿童节活动开幕词
2016/03/04 职场文书
如何用PHP websocket实现网页实时聊天
2021/05/26 PHP
HTML中的表格元素介绍
2022/02/28 HTML / CSS
MySQL数据库实验实现简单数据库应用系统设计
2022/06/21 MySQL