python处理圆角图片、圆形图片的例子

时间:2021-06-08 15:20:15 

效果图如下:

python处理圆角图片、圆形图片的例子
图1(头像图片剪成圆形的,其他为透明)

python处理圆角图片、圆形图片的例子
图2(给图片的4个角加椭圆)


以前没处理过,处理起来真是有点费力呀。

用到的模块:


import os, math
import Image
import ImageDraw

1 头像图片剪成圆形的,其他为透明

搜索了好久,没有找到比较好的方法,有个博客(不好意思,忘记博客地址了)用了一个比较诡异的方法,我试了一下,除了处理jpg图片没有格式转换,其他的都没有问题,我当时就先按照那个方法来了


def circle():

    ima = Image.open("test.jpg").convert("RGBA")

    size = ima.size

    # 因为是要圆形,所以需要正方形的图片

    r2 = min(size[0], size[1])

    if size[0] != size[1]:

        ima = ima.resize((r2, r2), Image.ANTIALIAS)

    imb = Image.new('RGBA', (r2, r2),(255,255,255,0))

    pima = ima.load()

    pimb = imb.load()

    r = float(r2/2) #圆心横坐标

    for i in range(r2):

        for j in range(r2):

            lx = abs(i-r+0.5) #到圆心距离的横坐标

            ly = abs(j-r+0.5)#到圆心距离的纵坐标

            l  = pow(lx,2) + pow(ly,2)

            if l <= pow(r, 2):

                pimb[i,j] = pima[i,j]

    imb.save("test_circle.png")

这个方法是 计算每个像素到原点(就是图片中心点)的距离来画圆形的


2、给图片的4个角加椭圆


def circle_corder_image():

    im = Image.open("test.jpg").convert("RGBA")

    rad = 10  # 设置半径 

    circle = Image.new('L', (rad * 2, rad * 2), 0)

    draw = ImageDraw.Draw(circle)

    draw.ellipse((0, 0, rad * 2, rad * 2), fill=255)

    alpha = Image.new('L', im.size, 255)

    w, h = im.size

    alpha.paste(circle.crop((0, 0, rad, rad)), (0, 0))

    alpha.paste(circle.crop((0, rad, rad, rad * 2)), (0, h – rad))

    alpha.paste(circle.crop((rad, 0, rad * 2, rad)), (w – rad, 0))

    alpha.paste(circle.crop((rad, rad, rad * 2, rad * 2)), (w – rad, h – rad))

    im.putalpha(alpha)

    im.save('test_circle_corder.png')

用了这个方法后,想了一想,头像图片剪成圆形的,其他为透明,用这个方法也是可以的,于是画圆形有了下面的方法:


def circle_new():

    ima = Image.open("test.jpg").convert("RGBA")

    size = ima.size

    r2 = min(size[0], size[1])

    if size[0] != size[1]:

        ima = ima.resize((r2, r2), Image.ANTIALIAS)

    circle = Image.new('L', (r2, r2), 0)

    draw = ImageDraw.Draw(circle)

    draw.ellipse((0, 0, r2, r2), fill=255)

    alpha = Image.new('L', (r2, r2), 255)

    alpha.paste(circle, (0, 0))

    ima.putalpha(alpha)

    ima.save('test_circle.png')

虽然最后我想要的都有了,但是通过对这2个问题的研究,我看到了python 图片处理的强大,好多还值得我去学习研究。

标签:python,图片,圆角图片
0
投稿

猜你喜欢

  • TensorFlow 模型载入方法汇总(小结)

    2022-11-09 00:05:42
  • 一组常用的弹出窗口用法总结

    2007-10-08 13:04:00
  • show一下刚做的系统登录界面

    2008-09-13 19:13:00
  • 揭秘SQL Server 2008性能和可扩展性

    2009-03-10 14:47:00
  • MS SQL2000 数据库自动备份方法

    2010-07-22 19:52:00
  • 基于python和flask实现http接口过程解析

    2022-06-01 11:46:36
  • 使用游标进行PHP SQLSRV查询的方法与注意事项

    2023-05-22 10:51:10
  • Web页面空间利用率的思考

    2009-07-03 12:45:00
  • http通过StreamingHttpResponse完成连续的数据传输长链接方式

    2023-06-04 03:33:45
  • javascript 45种缓动效果(一)

    2009-09-19 18:30:00
  • css学习笔记:为什么在IE6下图片会往下掉一行

    2009-06-19 12:50:00
  • Python数据类型及常用方法

    2022-09-22 08:09:19
  • 超级链接中MailTo的语法

    2008-08-29 13:00:00
  • 详细总结Python常见的安全问题

    2022-04-22 14:19:20
  • python检测空间储存剩余大小和指定文件夹内存占用的实例

    2022-10-30 06:52:51
  • CSS定位属性Position详解

    2009-09-16 20:37:00
  • JavaScript 日期下拉选择器

    2008-10-31 12:13:00
  • ASP--IP字段截取

    2009-05-26 15:47:00
  • Python实现提取音乐频谱的方法详解

    2022-01-27 07:03:08
  • Python实现滑块验证码详解

    2022-03-15 09:04:53
  • asp之家 网络编程 m.aspxhome.com