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 转换圆形图片
最新推荐文章于 2023-02-17 10:20:39 发布