Python 转换圆形图片

import os,math,time
from PIL import Image

def FUNCcircleimage(STRfilenamein,STRfilenameout):
    INTbegintime=time.perf_counter()
    FILEIMGhandlein=Image.open(STRfilenamein).convert("RGBA")
    INTLISTsize=FILEIMGhandlein.size
    INTLISTsizetmp=min(INTLISTsize[0],INTLISTsize[1])
    if INTLISTsize[0] != INTLISTsize[1]:
        FILEIMGhandlein=FILEIMGhandlein.resize((INTLISTsizetmp,INTLISTsizetmp),Image.ANTIALIAS)
    ### 图片旋转90度
    FILEIMGhandlein=FILEIMGhandlein.transpose(Image.ROTATE_90)
    # FILEIMGhandlein=FILEIMGhandlein.transpose(Image.FLIP_LEFT_RIGHT)
    # FILEIMGhandlein=FILEIMGhandlein.transpose(Image.FLIP_TOP_BOTTOM)
    # FILEIMGhandlein=FILEIMGhandlein.transpose(Image.ROTATE_90)
    # FILEIMGhandlein=FILEIMGhandlein.transpose(Image.ROTATE_180)
    # FILEIMGhandlein=FILEIMGhandlein.transpose(Image.ROTATE_270)
    FLOATcircler=float(INTLISTsizetmp/2)                                        # 圆心横坐标
    FILEIMGhandleout=Image.new('RGBA', (round(FLOATcircler*2),round(FLOATcircler*2)),(255,255,255,0))
    IMGPIMhandlein=FILEIMGhandlein.load()                                       # 像素的访问对象 
    IMGPIMhandleout=FILEIMGhandleout.load()
    INToldpercent=0
    INTscale=1
    INTfornumber=INTLISTsizetmp**2
    for i in range(INTLISTsizetmp): 
        for j in range(INTLISTsizetmp):
            INTnewpercent=round(INTscale/INTfornumber*100)
            if INTnewpercent>INToldpercent:
                INToldpercent=INTnewpercent
                INTcnttime=round(time.perf_counter()-INTbegintime)
                os.system("clear")
                print("正在处理坐标{:>4}*{:>4}的像素,耗时{:>3}秒,完成{:>2}%".format(i,j,INTcnttime,INTnewpercent))
            FLOATposx=abs(i-FLOATcircler)                                       # 到圆心距离的横坐标 
            FLOATposy=abs(j-FLOATcircler)                                       # 到圆心距离的纵坐标 
            FLOATlenght=(pow(FLOATposx,2)+pow(FLOATposy,2))** 0.5               # 三角函数 半径 
            if FLOATlenght < FLOATcircler: 
                IMGPIMhandleout[i,j] = IMGPIMhandlein[i,j]
            INTscale+=1
    FILEIMGhandleout.save(STRfilenameout) 

STRfilenamein="inputimage.jpg"
STRfilenameout="circleout.png"
FUNCcircleimage(STRfilenamein,STRfilenameout)
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值