Tôi có một biểu tượng hình vuông và tôi cần phải round_corner nó, tìm kiếm một thời gian và nhận được mã follow "làm việc":Làm thế nào để round_corner một logo mà không có nền trắng (trong suốt?) Trên nó bằng cách sử dụng pil?
def round_corner_jpg(image, radius):
"""generate round corner for image"""
mask = Image.new('RGB', image.size)
#mask = Image.new('RGB', (image.size[0] - radius, image.size[1] - radius))
#mask = Image.new('L', image.size, 255)
draw = aggdraw.Draw(mask)
brush = aggdraw.Brush('black')
width, height = mask.size
draw.rectangle((0,0,width,height), aggdraw.Brush('white'))
#upper-left corner
draw.pieslice((0,0,radius*2, radius*2), 90, 180, None, brush)
#upper-right corner
draw.pieslice((width - radius*2, 0, width, radius*2), 0, 90, None, brush)
#bottom-left corner
draw.pieslice((0, height - radius * 2, radius*2, height),180, 270, None, brush)
#bottom-right corner
draw.pieslice((width - radius * 2, height - radius * 2, width, height), 270, 360, None, brush)
#center rectangle
draw.rectangle((radius, radius, width - radius, height - radius), brush)
#four edge rectangle
draw.rectangle((radius, 0, width - radius, radius), brush)
draw.rectangle((0, radius, radius, height-radius), brush)
draw.rectangle((radius, height-radius, width-radius, height), brush)
draw.rectangle((width-radius, radius, width, height-radius), brush)
draw.flush()
del draw
return ImageChops.add(mask, image)
sau đó tôi lưu các đối tượng hình ảnh trở lại, tuy nhiên nó có nền trắng trong góc like this Làm cách nào để thoát khỏi nền trắng hoặc làm cho hình ảnh ẩn? Cảm ơn trước ~
EDIT: đây là mã bằng Fraxel, nhờ ~
def add_corners(im, rad):
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, "white")
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)
return im
if __name__ == '__main__':
im = Image.open('1.jpg')
im = add_corners(im, 100)
im.save('out.png')`
Tôi rất sorry..I cần hình ảnh để có hình elip không hình chữ nhật, tức là. các công cụ viết ra khỏi pic, và @fraxel, tôi vẫn có thể thấy góc trắng trong ảnh mà bạn đã xử lý cho tôi
cảm ơn, nhưng nó vẫn có góc trắng trên nền. Hãy xem [link] này (http://www.flickr.com/photos/[email protected] N03/7485468218/in/photostream) để xem vấn đề, và tôi cần góc màu hồng vô hình, trong trường hợp của bạn góc trắng (U không thể nhìn thấy nó ở đây vì nó trắng, cùng màu như trang web) .. Hy vọng bạn hiểu ý tôi là gì – bdictator
@bdictator - vui lòng đăng mã đầy đủ của bạn. và bạn đang sử dụng mã của tôi và tiết kiệm như một png? – fraxel
có, tôi đang sử dụng mã của bạn, hãy xem mã được thêm vào của tôi – bdictator