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 相关文章推荐
教你用Type Hint提高Python程序开发效率
Aug 08 Python
Python 实现「食行生鲜」签到领积分功能
Sep 26 Python
python实现关闭第三方窗口的方法
Jun 28 Python
Python Pandas 获取列匹配特定值的行的索引问题
Jul 01 Python
python实现连连看辅助(图像识别)
Mar 25 Python
django创建最简单HTML页面跳转方法
Aug 16 Python
Python实现微信机器人的方法
Sep 06 Python
wxPython之wx.DC绘制形状
Nov 19 Python
使用Python爬虫库requests发送请求、传递URL参数、定制headers
Jan 25 Python
python 解决Windows平台上路径有空格的问题
Nov 10 Python
Selenium获取登录Cookies并添加Cookies自动登录的方法
Dec 04 Python
解决selenium+Headless Chrome实现不弹出浏览器自动化登录的问题
Jan 09 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
安装APACHE
2007/01/15 PHP
PHP分页效率终结版(推荐)
2013/07/01 PHP
详解PHP导入导出CSV文件
2014/11/03 PHP
在SAE上搭建最新wordpress的方法
2014/12/21 PHP
php实现遍历文件夹的方法汇总
2017/03/02 PHP
让ie6也支持websocket采用flash封装实现
2013/02/18 Javascript
悬浮数字的实现案例
2014/02/19 Javascript
JavaScript中的函数的两种定义方式和函数变量赋值
2014/05/12 Javascript
node.js中的fs.fsync方法使用说明
2014/12/15 Javascript
轻松实现jquery手风琴效果
2016/01/14 Javascript
jQueryUI中的datepicker使用方法详解
2016/05/25 Javascript
Bootstrap实现弹性搜索框
2016/07/11 Javascript
图解Javascript——作用域、作用域链、闭包
2017/03/21 Javascript
Vuejs 2.0 子组件访问/调用父组件的方法(示例代码)
2018/02/08 Javascript
重新认识vue之事件阻止冒泡的实现
2018/08/02 Javascript
Vue.js更改调试地址端口号的实例
2018/09/19 Javascript
Vue父子组件之间的通信实例详解
2018/09/28 Javascript
vue ssr 实现方式(学习笔记)
2019/01/18 Javascript
vue组件之间通信方式实例总结【8种方式】
2019/02/22 Javascript
详解如何运行vue项目
2019/04/15 Javascript
基于vue-cli、elementUI的Vue超简单入门小例子(推荐)
2019/04/17 Javascript
jquery轻量级数字动画插件countUp.js使用详解
2019/10/17 jQuery
ckeditor一键排版功能实现方法分析
2020/02/06 Javascript
[02:18]《我与DAC》之工作人员:为了热爱DOTA2的玩家们
2018/03/28 DOTA
详解Python中的from..import绝对导入语句
2016/06/21 Python
Python实现针对给定字符串寻找最长非重复子串的方法
2018/04/21 Python
Pycharm导入Python包,模块的图文教程
2018/06/13 Python
加拿大最大的书店:Indigo
2017/01/01 全球购物
Converse匡威法国官网:美国著名帆布鞋品牌
2018/12/05 全球购物
日本亚马逊官方网站:Amazon.co.jp
2020/04/14 全球购物
如何将无状态会话Bean发布为WEB服务,只有无状态会话Bean可以发布为WEB服务?
2015/12/03 面试题
中国梦演讲稿范文
2014/08/28 职场文书
2014年医院科室工作总结
2014/12/20 职场文书
2016年“5.12”护士节慰问信
2015/11/30 职场文书
关于党风廉政建设宣传教育月的活动总结!
2019/08/08 职场文书
【DOTA2】高能暴走TK秀!PSG LGD vs ASTER - DPC 2022 WINTER TOUR CN
2022/04/02 DOTA