@sevenup233
2019-06-09T10:35:30.000000Z
字数 1056
阅读 406
PY
from PIL import Image
img=Image.open("1.png")
#邻近法
def near(img):
width=img.size[0]
height=img.size[1]
newim=Image.new("RGB",(2*width,2*height),(0,0,0))
for j in range(height*2):
ory=int(j/2)
for i in range(width*2):
orx=int(i/2)
orpixel=img.getpixel((orx,ory))
newim.putpixel((i,j),orpixel)
newim.save('near.png')
#双线性
def biline(img):
width=img.size[0]
height=img.size[1]
newim=Image.new("RGB",(2*width,2*height),(0,0,0))
#求中点
ori_mw=(width-1)/2
ori_mh=(height-1)/2
cur_mw=(width*2-1)/2
cur_mh=(height*2-1)/2
#先坐标变换,再找临近四个基准点,第j列(y),第i行(x)
for j in range(height*2):
ref_y=ori_mh-(ori_mh*(cur_mh-j))/cur_mh
for i in range(width*2):
ref_x=ori_mw-(ori_mw*(cur_mw-i))/cur_mw
y1=int(ref_y)
y2=y1+1
x1=int(ref_x)
x2=x1+1
#得到当前点的pixel属性,rgb
pixel=[]
for k in range(3):
if x2>width-1:
x2=width-1
x1-=1
if y2>height-1:
y2=height-1
y1-=1
pixel.append(int(img.getpixel((x1,y1))[k]*(x2-ref_x)*(y2-ref_y)+img.getpixel((x2,y1))[k]*(ref_x-x1)*(y2-ref_y)+img.getpixel((x1,y2))[k]*(x2-ref_x)*(ref_y-y1)+img.getpixel((x2,y2))[k]*(ref_x-x1)*(ref_y-y1)))
pixel.append(255)
newim.putpixel((i,j),tuple(pixel))
newim.save('line.png')