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)

你可能感兴趣的:(Python)