코드는 실제로는 않습니다 말하는 않습니다. 그러나 이미지 배경이 검은 색이 아니라 흰색 인 경우 이미지가 더 밝게 표시됩니다. 다음 코드는 원본 이미지를 검은 색 이미지와 병합하므로 배경과 관계없이 어두운 그라데이션 효과를 갖습니다.
def test(path):
im = Image.open(path)
if im.mode != 'RGBA':
im = im.convert('RGBA')
width, height = im.size
gradient = Image.new('L', (width, 1), color=0xFF)
for x in range(width):
gradient.putpixel((x, 0), 255-x)
alpha = gradient.resize(im.size)
black_im = Image.new('RGBA', (width, height), color=0) # i.e. black
black_im.putalpha(alpha)
gradient_im = Image.alpha_composite(im, black_im)
gradient_im.save('out.png', 'PNG')
편집
그라데이션을 확장 할 수있는 여러 가지 방법이 있습니다. 다음은 하나의 제안입니다.
def test(path, gradient_magnitude=1.):
im = Image.open(path)
if im.mode != 'RGBA':
im = im.convert('RGBA')
width, height = im.size
gradient = Image.new('L', (width, 1), color=0xFF)
for x in range(width):
# gradient.putpixel((x, 0), 255-x)
gradient.putpixel((x, 0), int(255 * (1 - gradient_magnitude * float(x)/width)))
alpha = gradient.resize(im.size)
black_im = Image.new('RGBA', (width, height), color=0) # i.e. black
black_im.putalpha(alpha)
gradient_im = Image.alpha_composite(im, black_im)
gradient_im.save('out.png', 'PNG')
감사합니다. 그것은 작동 보인다. 그래디언트 크기는 어떻게 제어 할 수 있습니까? 전체 이미지 크기에 그라데이션이 필요하지 않습니다. – saa
죄송합니다, gradient_magnitude를 건너 뛰었습니다. 괜찮아 보입니다. 감사! – saa
어쩌면 알고 있습니다. 더 많은 불투명도를 추가하려면 어떻게해야합니까? 그냥 왼쪽에 매우 검은 색입니다. – saa