tengo un logotipo cuadrado y necesito round_corner que, buscado por un tiempo y ya dispone del código de seguimiento "de trabajo":cómo redondear la esquina de un logotipo sin fondo blanco (¿transparente?) Con 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)
entonces me salvó el objeto de imagen devuelto, sin embargo, tiene el fondo blanco en la esquina like this ¿Cómo puedo eliminar el fondo blanco o hacerlo invisible? Gracias de antemano ~
EDIT: aquí está el código de Fraxel, gracias ~
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')`
estoy tan sorry..I necesitan la forma de la imagen a ser elipse no rectángulo, es decir. las cosas de escritura fuera de la foto, y @fraxel, todavía puedo ver la esquina blanca en la foto que procesaste para mí
gracias, pero todavía tiene una esquina blanca en el fondo. Consulte este [enlace] (http://www.flickr.com/photos/[email protected] N03/7485468218/in/photostream) para ver el problema, y necesito el rincón rosado invisible, en su caso esquina blanca (U no puede verlo aquí ya que es blanco, del mismo color que la página web) .. Espero que entiendas lo que quiero decir – bdictator
@bdictator - por favor publique su código completo. y ¿estás usando mi código y guardando como png? – fraxel
sí, estoy usando tu código, mira mi código agregado – bdictator