参考链接:https://stackoverflow.com/questions/11287402/how-to-round-corner-a-logo-without-white-backgroundtransparent-on-it-using-pi

用了三种方法,第三种方法效果最好,效果如下图:

需要用到两个库:

  1. pip install Pillow
  2. pip install aggdraw

源码如下:

  1. from PIL import Image,ImageDraw,ImageChops
  2. import aggdraw
  3. import os
  4.  
  5. def round_corner_jpg(image, radius):
  6. """generate round corner for image"""
  7. mask = Image.new('L', image.size) # filled with black by default
  8. draw = aggdraw.Draw(mask)
  9. brush = aggdraw.Brush('white')
  10. width, height = mask.size
  11. #upper-left corner
  12. draw.pieslice((0,0,radius*2, radius*2), 90, 180, None, brush)
  13. #upper-right corner
  14. draw.pieslice((width - radius*2, 0, width, radius*2), 0, 90, None, brush)
  15. #bottom-left corner
  16. draw.pieslice((0, height - radius * 2, radius*2, height),180, 270, None, brush)
  17. #bottom-right corner
  18. draw.pieslice((width - radius * 2, height - radius * 2, width, height), 270, 360, None, brush)
  19. #center rectangle
  20. draw.rectangle((radius, radius, width - radius, height - radius), brush)
  21. #four edge rectangle
  22. draw.rectangle((radius, 0, width - radius, radius), brush)
  23. draw.rectangle((0, radius, radius, height-radius), brush)
  24. draw.rectangle((radius, height-radius, width-radius, height), brush)
  25. draw.rectangle((width-radius, radius, width, height-radius), brush)
  26. draw.flush()
  27. image = image.convert('RGBA')
  28. image.putalpha(mask)
  29. return image
  30.  
  31. def get_filePath_fileName_fileExt(fileUrl):
  32. """
  33. 获取文件路径, 文件名, 后缀名
  34. :param fileUrl:
  35. :return:
  36. """
  37. filepath, tmpfilename = os.path.split(fileUrl)
  38. shotname, extension = os.path.splitext(tmpfilename)
  39. return filepath, shotname, extension
  40.  
  41. if __name__ == '__main__':
  42. picLocation = 'Sina1.png'
  43. im = Image.open(picLocation)
  44. im = round_corner_jpg(im, 20)
  45. im.save(get_filePath_fileName_fileExt(picLocation)[1]+'_round.png')

顺便安利一个免费的开源的看图片的软件:https://imageglass.org/

前面两种方法效果都不好

第一种方法锯齿比较明显

第二种方法有白色区域:

python 直角图标生成圆角图标的更多相关文章

  1. python实现基于两张图片生成圆角图标效果的方法

    python实现基于两张图片生成圆角图标效果的方法 这篇文章主要介绍了python实现基于两张图片生成圆角图标效果的方法,实例分析了Python使用pil模块进行图片处理的技巧,分享给大家供大家参考. ...

  2. DSAPI 生成桌面图标(带数字)

    功能:在桌面上创建一个带有指定数字的图标. 效果图: 生成的ICO图标 代码 Private Sub 生成桌面图标(消息数量 As Integer) Try Dim B As New Bitmap(M ...

  3. Font Combiner – 自定义网页字体和图标生成工具

    Font Combiner 是一个功能丰富的 Web 字体生成工具和字体改进工具,提供字距调整.构造子集.各种提示选项和自定义字体字形组合.您可以生成您自己的自定义字体的格式和文件大小. 另外还有成千 ...

  4. 详解使用icomoon生成字体图标的方法并应用

    原文:http://blog.csdn.net/u013938465/article/details/50680468 最近项目大量用到字体图标,大家也知道,字体图标任意缩放不会失真,也大大减少请求数 ...

  5. Flatty Shadow在线为Icon图标生成长阴影效果。

    Flatty Shadow在线为Icon图标生成长阴影效果. Flatty Shadow 彩蛋爆料直击现场 Flatty Shadow在线为Icon图标生成长阴影效果.

  6. icomoon:生成字体图标的方法并应用

    字体图标任意缩放不会失真,也大大减少请求数量,非常好用. 在线生成工具:https://icomoon.io/app/#/select 在线SVG图库(阿里),  用于导入:http://www.ic ...

  7. App 图标设计 - 圆角透明效果(0 基础使用 PS)

    App 图标设计 - 圆角透明效果(0 基础使用 PS) 方法: 如果你有些基础,就不必看图文教程了: 1.使用圆角矩形工具选中,设置圆角尺寸[例如:1024*1024 px(圆角:160 px)] ...

  8. 使用icomoon把svg图片生成字体图标

    今天看了使用icomoon来将svg转换成图标字体,本来是不会使用别人给的svg,也不清楚具体的好处是什么,查了svg以后,越来越懵,svg挺好的为什么要转成图标字体呢. 一.SVG介绍 SVG 是一 ...

  9. ICO图标在线生成,php生成ICO图标在线制作源码

    我们做web系统的时候,每个浏览器的tab这里都会有一个图标,这个图标叫favicon图标,favicon.ico文件放在系统的根目录 如果程序员没有ICO制作工具,那么要如何生成图标呢?可以用程序来 ...

随机推荐

  1. CNN中各类卷积总结:残差、shuffle、空洞卷积、变形卷积核、可分离卷积等

    CNN从2012年的AlexNet发展至今,科学家们发明出各种各样的CNN模型,一个比一个深,一个比一个准确,一个比一个轻量.我下面会对近几年一些具有变革性的工作进行简单盘点,从这些充满革新性的工作中 ...

  2. debian源配置实例

    debian9 官方源: deb http://ftp.debian.org/debian stretch main contribdeb http://ftp.debian.org/debian s ...

  3. Cloudera-Manager(一) —— 基本概念及使用

    概念 Cloudera Manager(简称CM)是Cloudera公司开发的一款大数据集群安装部署利器,这款利器具有集群自动化安装.中心化管理.集群监控.报警等功能,极大的提高集群管理的效率. AP ...

  4. 数据仓库DW、ODS、DM概念及其区别

    整体结构 在具体分析数据仓库之前先看下一下数据中心的整体架构以及数据流向   数据中心整体架构.png DB 是现有的数据来源,可以为mysql.SQLserver.文件日志等,为数据仓库提供数据来源 ...

  5. linux环境,无dig命令-bash: dig: command not found?

    背景描述: 今天使用dig命令,报错命令不存在,-bash: dig: command not found 解决: 通过yum方式安装 yum -y install bind-utils 备注:之前尝 ...

  6. 简单的 js 模版引擎

    简单的 js 模版引擎 var tplEngine = function(tpl, data) { var reg = /<%([^%>]+)?%>/g, regOut = /(^( ...

  7. 屠龙术&平凡的世界

    x 听过很多道理,却依然过不好这一生 小时候,总觉得世上肯定存在屠龙术.就像<倚天屠龙记>里面张无忌学的<乾坤大挪移>/<九阳真经>一般, 学会了就可以一人单挑光明 ...

  8. 将AD域漫游用户配置文件放在samba服务器中

    书接上回https://www.cnblogs.com/jackadam/p/11448497.html 我们已经将linux服务器设置为域成员,启动samba服务后,已经实现了使用域账号验证,自动创 ...

  9. [LeetCode] 407. Trapping Rain Water II 收集雨水 II

    Given an m x n matrix of positive integers representing the height of each unit cell in a 2D elevati ...

  10. sshpass命令使用

    1.直接远程连接某主机 sshpass -p {密码} ssh {用户名}@{主机IP} 2.远程连接指定ssh的端口 sshpass -p {密码} ssh -p ${端口} {用户名}@{主机IP ...