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程序设计有所帮助。

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

  1. c语言两种排序方法的组合,排列和组合算法的实现方法_C语言经典案例

    排列和组合算法是考查递归的常见算法,这两种算法能用递归简洁地实现. 本人在经过多次摸索和思考之后,总结如下,以供参考. 程序代码如下: #include #include char array[] = ...

  2. python把一堆图片分成n份,用Python一键生成炫酷九宫格图片,火了朋友圈

    原标题:用Python一键生成炫酷九宫格图片,火了朋友圈 作为一个男同胞来说,为了给女朋友拍一张美美的照片,着实需要花费很大的时间和精力,不仅仅需要从众多的图片中精心挑选,而且还需要有着超强的图片精修 ...

  3. arp协议分析python编程实现arp欺骗抓图片

    arp协议分析&python编程实现arp欺骗抓图片 序 学校tcp/ip协议分析课程老师布置的任务,要求分析一种网络协议并且研究安全问题并编程实现,于是我选择了研究arp协议,并且利用pyt ...

  4. Python爬虫抓取指定网页图片代码实例

    更多编程教程请到:菜鸟教程 https://www.piaodoo.com/ 友情链接:好看站 http://www.nrso.net/ 高州阳光论坛https://www.hnthzk.com/ 想 ...

  5. Python+爬虫技术获取斗鱼直播图片(整理)

    核心内容: 1.爬虫的基本原理 2.利用Python爬取数据的方法(使用urllib爬取数据) 3.从斗鱼直播平台爬取图片 最近因为工作的原因,要利用爬虫的相关技术,获取html网页相关的数据,特意总 ...

  6. Python:data:image/png;base64图片编码解码

    编码后的内容,可以在浏览器中直接打开,提示:先去掉回车 data类型的Url大致有下面几种形式 data:,<文本数据> data:text/plain,<文本数据> data ...

  7. 利用 Python 去除 PDF 水印(和图片水印原理一样)

    前言 今天介绍下用 Python 去除 PDF (图片)的水印.思路很简单,代码也很简洁. 首先来考虑 Python 如何去除图片的水印,然后再将思路复用到 PDF 上面. 原理 这张图片是前几天整理 ...

  8. python人像变卡通,Python实现将照片变成卡通图片的方法【基于opencv】

    本文实例讲述了Python实现将照片变成卡通图片的方法.分享给大家供大家参考,具体如下: 之前的文章介绍了使用Photoshop将照片变成卡通图片,今次介绍用代码来实现这项任务,可以就此探查各种滤镜的 ...

  9. Python seaborn可视化:组合多个seaborn可视化结果并使得组合结果图像共享X轴、使用matplotlib的subplots子图函数的gridspec_kw参数指定子图的相对大小或者比率

    Python seaborn可视化:组合多个seaborn可视化结果并使得组合结果图像共享X轴.使用matplotlib的subplots子图函数的gridspec_kw参数指定子图的相对大小或者比率 ...

最新文章

  1. 关于 TApplication 详解 三 ---- TComponent
  2. Python零碎知识(7):硬性出错
  3. Perl正则表达式--练习1
  4. 浅谈C/C++中的typedef和#define
  5. 使用ArcGIS JavaScript API 3.18 加载天地图
  6. Linux下如何定位Java进程CPU利用率过高原因
  7. c语言枚举法礼泡声次数,C语言枚举类型举例
  8. html pie标签,pie.html
  9. 解决Debian 11系统缺少无线网卡固件rtl8192cfw.bin
  10. Software Testing - UI自动化测试常用设计模式之原型(Java)
  11. 基层群众工作存在的问题_当前基层群众在移风易俗方面存在的问题
  12. fedora11上安装fcitx
  13. oracle修改查询结果,Oracle使用查询结果更新表的方法
  14. web应用开发平台,微信web开发者
  15. 基于ssm框架的校园二手交易平台
  16. 大数据开发实战教程目录
  17. 15.1 DIB 文件格式
  18. world wind java sdk_科学网—用worldwind java SDK开发应用程序 - 谢安涛的博文
  19. vue学习实现待办事项功能
  20. 用MATLAB进行大地测量学上的子午线弧长计算

热门文章

  1. 成都双流区链家网租房python数据可视化
  2. HNU程序设计-炸弹
  3. 筋膜枪之原理及方案浅析
  4. Netflix 推荐系统
  5. 什么是Mocking framework?它有什么用?
  6. 安防行业S2B2C系统网站智能化大数据,S2B2C平台助力企业效率成倍提升
  7. burpsuite的基本使用
  8. Captcha must be filled out.
  9. 问题解决:Warning: date() [function.date]: It is not safe to rely on the system's timezone settings. You.
  10. jq替代html的写法,jquery替代品 使用Jquery能完全替代js吗